2011-03-31 3 views
0

문자열 배열 마녀가 중복 값을 포함 할 수 있으므로 필터를 작성하여 모든 중복을 제거하려고합니다.배열 중복 필터 문제 android/java

아래에 붙여 넣은 코드는 배열의 첫 번째 요소를 제외하고 모두 작동합니다. 그 이유를 파악할 수 없습니다.

도움을 주셔서 감사합니다.

for(int i=0; i<forparts.length; i++){ 
     elem = forparts[i]; 
     for (int n=i+1; n<forparts.length; n++){ 
      elem2 = forparts[n]; 
      if (elem2.equalsIgnoreCase(elem)){ 
       forparts[n] = ""; 
      } 
     } 
    } 
+0

배열의 첫 번째 요소에 대해 작동하지 않는다는 것은 무엇을 의미합니까? 무엇을 얻고 있으며 예상되는 결과는 무엇입니까? 참고 사항 : yock의 대답은 문자열 목록에서 중복을 제거하는 효율적인 방법입니다. –

+0

첫 번째 요소가 배열 어딘가에 복제되면 두 번째 인스턴스가 예상대로 제거되지 않습니다. 나는 세트에 익숙하지 않다. 아프게 한방 먹여서 내가 그 방식대로 작동하도록 만들 수 있는지 확인하십시오. 감사합니다 – Joe

+0

코드를 확인했습니다. 그것은 나를 위해 작동합니다. –

답변

2

상자 밖에서 생각해 보니 배열을 사용해야합니까? 필요한 동작은 Java Collections 라이브러리의 Set 인터페이스에서 사용할 수 있습니다.

Set<MyType> set = new LinkedHashSet<MyType>(); 
MyType obj = new MyType(); 
boolean bAdded; 
bAdded = set.add(obj); // bAdded == true, set.size() == 1 
bAdded = set.add(obj); //bAdded == false; set.size() == 1 

이렇게하면 처음부터 추가 된 적이 없으므로 컬렉션에서 복제본을 필터링 할 필요가 없습니다.

+0

나는 속임수로 배열의 시작 부분에 빈 요소를 추가하여 작동하도록했다. 나는 왜 내가 필요한지 알지 못한다. 그래도 도움을 주셔서 감사합니다. 앞으로는 set 인터페이스를 구현하려고합니다. – Joe