如何从数组中删除重复

时间:2013-09-14 14:27:06

标签: java

请你帮帮我吗?我有这样的代码,我必须对它进行排序,然后删除重复项。我已经对它进行了排序,但现在我在删除重复项时遇到了问题。你能帮我完成下面的代码吗? 谢谢你们,它已经解决了

5 个答案:

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