배열

2012-08-09 4 views
0

에서 반복적 인 항목을 제거 내가 정렬 및 배열에서 반복적 인 항목을 제거하는 방법이 있습니다배열

public ArrayList<Integer> sortArray(ArrayList<Integer> listForSort) { 

    List<Integer> sortTemp = new ArrayList<Integer>(); 
    ArrayList<Integer> Sortedlist = new ArrayList<Integer>(); 

    int[] array = new int[20]; 

for (int i = 0; i < listForSort.size(); i++) { 
    array[i] = listForSort.get(i); 
} 

Arrays.sort(array); 

for (int i = 0; i < array.length; i++) { 
    if (!(Arrays.asList(sortTemp).contains((Integer)array[i])) && (array[i] != 0)) { 
     Integer tempo = (Integer)array[i]; 
     Sortedlist.add(tempo); 
     sortTemp.add(tempo); 
     } 
} 
    return Sortedlist; 
} 

을하지만 내 방법은 반복되는 항목을 제거하지 않습니다. 뭐가 잘못 되었 니?

답변

0

내 제안은 세트를 사용하는 것입니다. 세트는 복제본을 입력 할 수 없도록하므로 복제본을 제거하는 것에 대해 걱정할 필요가 없습니다. SortedSet과 같을 수 있으므로 정렬 및 중복 제거가 자동으로 수행됩니다. ConcurrentSkipListSet, NavigableSet, TreeSet도 모두 SortedSet입니다.

+0

남자 감사합니다! 나는 당신의 힌트에 따라 그것을했다 : HashSet hs = new HashSet(); hs.addAll (listForSort); listForSort.clear(); listForSort.addAll (hs); – androidprogrammer2012

0

이 컴파일은 문맥 내에 심지어 반환하지 않으려 고 시도하는 SortedList입니까? 어쨌든, 반복을 제거하기위한 사전 (맵/해시 맵)을 먼저 작성한 다음이 사전의 모든 키를 정렬해야합니다.

+0

내 코드가 SortedList에 업데이트되었습니다. – androidprogrammer2012

0

너는이 일을 훨씬 더 어렵게 만들고있다. ArrayList와 List는 모두 Comparable 인터페이스를 구현합니다. 해당 요소에서 compareTo 메소드를 호출 할 수 있습니다. 반복자와 List.hasNext()를 사용하여 목록의 끝을 "떨어지는"

listForSort.get(i).compareTo(sortedList.get(i)); 

고려. 배열 작업을 훨씬 더 효율적으로 만듭니다.

+0

힌트에 따라 코드를 편집 할 수 있습니까? – androidprogrammer2012