0

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

4

5 回答 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 回答