2012-10-12 4 views
-1

Java에서 거대한 파일에 변수 값이 있고 그 변수 값을 다른 파일의 해당 값과 빨리 비교하고 싶다면 가장 좋은 방법은 무엇입니까? 이? 첫 번째 파일에는 잠재적으로 다른 파일의 값과 비교하려는 백만 가지 이상의 고유 변수가 있습니다. 비교 파일도 많이있을 수 있습니다.다른 파일에 대한 Java 파일의 값을 비교하십시오.

파일에 대한 세부 정보 : 파일은 다른 시간 조각에서 다른 변수에 대한 값을 저장하며 수백만 개의 레코드와 잠재적으로 수백만 개의 고유 변수를 포함합니다.

형식
변수, 변수의 값 A, 변수의 값 B,
변수 ID 1, 어떤 값이 어떤 값, 어떤 값
ID 2, 어떤 값이 어떤 값에 대한 값 C, 어떤 값
id 3, 일부 값, 일부 값, 일부 값
.
.
.
id 3000000, 일부 값, 일부 값, 일부 값

A, B, C에 대한 값에 대한 통계를 작성해야합니다. 한 시간 동안 개체에 결과를 저장할 수 있지만 다른 사람, 그래서 내가 파일에 쓰고 다시 읽어야합니까? 또한 많은 시간 조각이있을 수 있습니다.

+0

먼저 파일을 탐색 한 다음 값을 어딘가에 저장하십시오 (필요에 따라 ArrayList, Map). 그런 다음 ArrayList \ Map 값을 비교하십시오. –

+0

당신은 더 많은 것을 정교 할 필요가 있습니다. 질문은 정말로 원하는 것을 명확히하지 않으며 데이터가 어떤 파일 형식으로 직렬화되어 있는지를 간단히 말해서 메모리에서 비교를 수행하고 싶을 것입니다. –

+0

당신은 자바가 아닌'grep'을 사용할 수 있지만, 많은 시간을 절약 할 수 있습니다. – svz

답변

0

자바 속성 파일로 이동하십시오. Oracle Docs

키 - 값 쌍을 아주 잘 관리합니다.

1

귀하의 질문은 많은 중요한 세부 사항에 대해 짧지 만, 어떤 형식으로 된 이름 - 값 쌍으로 구성된 파일에 대해 이야기하고 있으며 주어진 이름이 각 파일에 최대 한 번 나타납니다.

이것은 고전적인 정렬 병합 방법에 빌려 준다 : 이름에 따라

  1. 정렬 모든 파일을.
  2. 선택 2 파일 비교 대상 :
  3. 병렬로 2 개 파일의 이름/값 쌍을 읽어
    • 이름이 동일 할 때, 대응하는 값들을 비교하고 두 쌍에게
    • 이름을 건너 가 같지 않으면 더 작은 이름을 가진 쌍을 건너 뛰고 그 파일에서 다음 것을 읽으십시오.
  4. 두 파일의 끝에 도달하면 중지하십시오.

참조 : http://en.wikipedia.org/wiki/Mainframe_sort_merge


참고 : 몇 백만 레코드의 순서의 경우, 당신은 현재 세대의 가정에 ... 정렬 메모리에 병합을 할 수 있어야 PC. 수십억 개의 레코드가있는 경우 각 (큰) 입력 파일을 서브 파일로 분리하고 각 서브 파일을 정렬 한 다음 결과를 병합하는 정렬 알고리즘을 사용해야합니다.

관련 문제