2012-08-09 58 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

我的建議是使用Set。一套不允許輸入一個重複,所以你不必擔心刪除它們。也許就像一個SortedSet,所以排序和重複刪除是自動的。 ConcurrentSkipListSet,NavigableSet,TreeSet都是SortedSet的。

+0

謝謝你的男人!我根據你的提示做了這件事:HashSet hs = new HashSet(); hs.addAll(listForSort); listForSort.clear(); listForSort.addAll(hs); – androidprogrammer2012 2012-08-09 18:49:53

0

這是否編譯(SortedList,你試圖返回甚至不存在於上下文中)? 無論如何,你應該首先創建一個字典(a.k.a. map/hash)去除重複,然後對這本字典中的所有關鍵字進行排序。

+0

我的代碼更新了關於SortedList。 – androidprogrammer2012 2012-08-09 13:50:16

0

你讓自己變得更加困難。 ArrayList和List都實現了Comparable接口。允許您在其任何元素上調用compareTo方法。

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

考慮到使用List.hasNext()和Iterators時「掉下」列表的末尾。它會使您的陣列操作更加高效。

+0

你可以根據你的提示編輯我的代碼嗎? – androidprogrammer2012 2012-08-09 13:48:49