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