Android 从数组中删除重复项
我有一种从数组中排序和删除重复项的方法:Android 从数组中删除重复项,android,arrays,repeat,Android,Arrays,Repeat,我有一种从数组中排序和删除重复项的方法: public ArrayList<Integer> sortArray(ArrayList<Integer> listForSort) { List<Integer> sortTemp = new ArrayList<Integer>(); ArrayList<Integer> Sortedlist = new ArrayList<Integer>();
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;
}
public ArrayList sortArray(ArrayList listForSort){
List sortTemp=new ArrayList();
ArrayList Sortedlist=新建ArrayList();
int[]数组=新的int[20];
对于(int i=0;i
但是我的方法没有删除重复项。有什么问题吗?这是否编译过(SortedList
,您试图返回的内容在上下文中甚至不存在)?。
无论如何,您应该首先创建一个字典(也称为map/hash)来删除重复,然后对该字典的所有键进行排序。我的建议是使用一个集合。集合不允许输入重复项,因此您不必担心删除它们。可能类似于分拣集,因此分拣和重复删除是自动的。ConcurrentSkipListSet、NavigableSet、TreeSet也都是分类集。你让自己更难做到这一点。ArrayList和List都实现了可比较的接口。允许您对其任何元素调用compareTo方法
listForSort.get(i).compareTo(sortedList.get(i));
使用list.hasNext()和迭代器考虑列表末尾的“下降”。它将使您的阵列操作更加高效 谢谢你,伙计!我是根据你的提示做的:HashSet hs=newhashset();hs.addAll(listForSort);listForSort.clear();listForSort.addAll(hs);