Java 如何从阵列中删除重复项

Java 如何从阵列中删除重复项,java,Java,你能帮我一下吗?我有一个这样的代码,我必须对它进行排序,然后删除重复的代码。我已经对它进行了排序,但现在我在删除重复项时遇到了问题。你能帮我完成下面的代码吗? 谢谢大家,问题解决了用集合代替ArrayList。集合会在您自动添加重复项后立即将其删除。在集合的帮助下,删除重复项的方法将变为 private static ArrayList<Integer> removeDuplicate(ArrayList<Integer> list) { ret

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

用集合代替ArrayList。集合会在您自动添加重复项后立即将其删除。

在集合的帮助下,删除重复项的方法将变为

 private static ArrayList<Integer> removeDuplicate(ArrayList<Integer> list)
    {
        return new ArrayList<Integer>(new  HashSet<Integer>(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);
您可以使用树集来完成排序和删除重复项这两项任务。让你的生活变得轻松。如果有一个简单的替代方案,为什么要将所有内容添加到列表中并删除重复项

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);

正如其他人提到的,使用树集可能是最简单的。但是,您的一条评论指出您不想这样做。也许你关心的是效率之类的。无论如何,要从预先排序的集合中删除重复项,可以尝试以下操作:

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

你有没有试过自己写一些东西?任何显示的尝试都将使人们更有可能帮助解决您可能遇到的问题。您是否需要编写自己的实现?否则你会得到答案:不会有太大作用,因为他没有重新分配列表变量。此外,此解决方案无法维持排序顺序。谢谢,伙计,但我不想使用set list。我想删除与比较和包含的重复项methods@jamesb然后看看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);
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;
    }
  }
}