请你帮帮我吗?我有这样的代码,我必须对它进行排序,然后删除重复项。我已经对它进行了排序,但现在我在删除重复项时遇到了问题。你能帮我完成下面的代码吗? 谢谢你们,它已经解决了
答案 0 :(得分:5)
您可以使用TreeSet
:
list = new ArrayList<>(new TreeSet<>(list));
例如:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(54);
list.add(12);
list.add(62);
list.add(54);
list.add(12);
list.add(43);
list.add(62);
list = new ArrayList<>(new TreeSet<>(list));
System.out.println(list);
[12, 43, 54, 62]
答案 1 :(得分:2)
使用Set
代替ArrayList
。只要您自动添加重复项,Set
就会删除重复项。
答案 2 :(得分:2)
在Set
的帮助下,删除了重复项,removeDuplicate
方法转为
private static ArrayList<Integer> removeDuplicate(ArrayList<Integer> list)
{
return new ArrayList<Integer>(new HashSet<Integer>(list));
}
答案 3 :(得分:2)
您可以使用TreeSet
来完成任务排序和删除重复项。让你的生活轻松。如果有一个简单的替代方法,为什么要将所有内容添加到列表中并删除重复项。
Set<Integer> set = new TreeSet<Integer>();
set.add(54);
set.add(12);
set.add(62);
set.add(54);
set.add(12);
set.add(43);
set.add(62);
答案 4 :(得分:1)
正如其他人所提到的,使用TreeSet可能最容易。但是,您的一条评论声明您不想这样做。也许你关心效率或其他什么。无论如何,要从预先排序的集合中删除重复项,您可以尝试以下内容:
static <T> void removeDuplicates(Iterable<T> pIterable) {
final Iterator<T> iterator = pIterable.iterator();
if (iterator.hasNext()) {
for (T prev = iterator.next(); iterator.hasNext();) {
final T current = iterator.next();
if (prev == null ? current == null : prev.equals(current)) {
iterator.remove();
}
prev = current;
}
}
}