2012-12-05 1 views
0

2 차원 배열에있는 데이터가 Object입니다. 중복 데이터를 결합한 알고리즘을 찾고 있지만 알고리즘은 중복 된 알고리즘을 잃어 버립니다.2dArray에서 중복 행을 결합하면서 모든 중복을 유지합니다.

ECE (201) 전기 및 컴퓨터 공학 I 2.6666666666666665

BIO (101) 생물학 I 2.0

CS (101) 컴퓨터 과학 I 3.5 : 또한, 내 데이터가, 상단에 모든 행을 유지, 그래서

AE (101) 항공 우주 공학 I 2.5

BE (101)의 생명 공학 I 2.0

,691 363,210

CS 101 전산학 I 2.0

CS 102 전산학 II 3.0

100 인트로 의공학 3.6

ECE 200 인트로 전자 컴퓨터 공학과 3.5

BIO 100 인트로 생물 2.2

BE

CS101 컴퓨터 과학 I 3.75

AE 101 Aerospace Engin eering 나는 1.6666666666666667

(100) 소개의 생명 공학 1.2

BE하지만 null들로 가득 차 있습니다. 나는 다음과 같은 알고리즘을 사용

for (int i = 0; i< finalData.length; i++) 
{ 
    if (finalData[i][1] != null) 
    { 
    String first = (String)finalData[i][1]; 
    for (int j = i; j< finalData.length; j++) 
    { 
     if (finalData[j][1]!= null) 
     { 
     String second = (String)finalData[j][1]; 
     if (first.equals(second)) 
     { 
      double one = (double)finalData[i][6]; 
      double two = (double)finalData[i][6]; 
      finalData[i][7] = (one + two)/2; 
      System.out.println("found!\t" + first + "\t" + second + "\t" + finalData[i][7]); 
     } 
     } 
    } 
    } 
} 

을 내 데이터가된다 :

발견! ECE 201 ECE 201 2.6666666666666665

가 발견되었습니다! 바이오 101 바이오 101 2.0

가 발견되었습니다! CS 101 CS 101 3.5

가 발견되었습니다! CS 101 CS 101 3.5

가 발견되었습니다! CS 101 CS 101 3.5

가 발견되었습니다! AE 101 AE 101 2.5

발견! AE 101 AE 101 2.5

발견! BE 101 BE 101 2.0

이 발견되었습니다! CS 101 CS 101 2.0

가 발견되었습니다! CS 101 CS 101 2.0

가 발견되었습니다! CS 102 CS 102 3.0

가 발견되었습니다! BE 100 BE 100 3.6

발견! BE 100 BE 100 3.6

발견! ECE 200 ECE 200 3.5

가 발견되었습니다! 바이오 100 바이오 100 2.2

발견! CS 101 CS 101 3.75

발견! AE 101 AE 101 1.6666666666666667

가 발견되었습니다! BE 100 BE 100 1.2

// 찾았습니다! 그것이 올바른 출력인지 확인하기위한 것입니다.

이 알고리즘을 향상시켜 원하는 결과를 얻을 수 있습니까?

+0

나는 당신이 무엇을하려고하는지 전혀 모른다. 정확한 것을 다시 설명하고 설명해 주시겠습니까? (그리고 입력 내용을 보여주는 * 간단한 테스트 케이스를 추가하고 프로그램에서 기대하는 출력이 무엇인지 확인하십시오) – amit

+0

'Object [] []를 사용하는 대신 ', 클래스를 작성하고'YourClass []'를 사용할 수 없습니까? – jlordo

답변

1

알고리즘을 작성하는 대신 세트 또는 해시 테이블을 사용할 수 있습니다.

세트를 선택하는 것이 좋습니다. 그들은 복제를 허용하지 않습니다. 여기에 대한 자세한 내용은 여기를 참조하십시오. http://docs.oracle.com/javase/tutorial/collections/interfaces/set.html

해시 테이블은 세트를 구현하는 방법입니다. 이를 사용하려면 데이터를 해시 키로 변환하기 위해 해싱 함수를 작성해야합니다. 그런 다음 해당 키를 사용하여 테이블에 색인을 생성하고 그곳에있는 값을 저장합니다.

+0

사실 해시에 대한 경험이 없으므로 그 방법을 사용할 수 없습니다. – iamseiko

+0

세트는 어떻습니까? 세트는 매우 쉽고 링크를 제공했습니다. 나는 그것들을 사용하는 것을 배우는 것이 알고리즘을 작성하거나 그것을 고치려고 시도하는 것보다 시간이 덜 걸릴 것이라고 생각한다. – RonaldBarzell

관련 문제