Would you please help me on this? I have a code like this, I have to sort it and then remove duplicates. I've already sorted it but now I'm having a problem removing duplicates. Would you please complete code below for me? thank guys , it's solved
问问题
162 次
5 回答
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]
于 2013-09-14T14:31:23.517 回答
2
使用 aSet
而不是ArrayList
. ASet
会在您自动添加重复项后立即删除它们。
于 2013-09-14T14:28:54.923 回答
2
在删除重复项的帮助下Set
,您的removeDuplicate
方法转向
private static ArrayList<Integer> removeDuplicate(ArrayList<Integer> list)
{
return new ArrayList<Integer>(new HashSet<Integer>(list));
}
于 2013-09-14T14:29:47.840 回答
2
您可以使用 aTreeSet
来完成任务排序和删除重复项。让您的生活轻松。如果有一个简单的替代方案,为什么要将所有内容添加到列表中并删除重复项。
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);
于 2013-09-14T14:31:36.133 回答
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;
}
}
}
于 2013-09-14T15:57:44.457 回答