从数组中删除重复项

时间:2012-08-09 13:33:01

标签: android arrays repeat

我有一种从数组中排序和删除重复项的方法:

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;
}

但我的方法不会删除重复的项目。有什么问题?

3 个答案:

答案 0 :(得分:0)

这是否完全编译(你尝试返回的SortedList甚至不存在于上下文中)? 无论如何,你应该首先创建一个字典(a.k.a. map / hash)来删除重复,然后对这个字典的所有键进行排序。

答案 1 :(得分:0)

我的建议是使用Set。 Set不允许输入副本,因此您不必担心删除它们。也许像SortedSet,因此排序和重复删除是自动的。 ConcurrentSkipListSet,NavigableSet,TreeSet也都是SortedSet的。

答案 2 :(得分:0)

你在自己身上做得更难了。 ArrayList和List都实现了Comparable接口。允许您对其任何元素调用compareTo方法。

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

考虑使用带迭代器的List.hasNext()将列表末尾“掉落”。它将使您的阵列操作更加有效。