Java 中ArrayList<Object>如何去除其中重复的对象

2024-11-07 15:25:56
推荐回答(2个)
回答(1):

去掉重复对象的方案很多, 比如利用set去重等.

参考代码

import java.util.ArrayList;
import java.util.HashSet;

public class Test {
public static void main(String[] args) {
ArrayList list =new ArrayList();
list.add(8);
list.add(2);
list.add(8);
list.add(7);
list.add(6);
list.add(5);
list.add(2);
list.add(7);
System.out.println("原始集合"+list);

//方案1 . 不考虑list原始顺序的情况下
HashSet set = new HashSet(list);//把list作为参数放到HashSet的构造函数里,去掉重复元素
ArrayList result1= new ArrayList(set);//把set作为参数放到ArrayList构造函数里
System.out.println(result1);//输出result1


//方案2   考虑list的原始顺序
ArrayList result2 = new ArrayList();
for (int i = 0; i  if(!result2.contains(list.get(i))) {//如果没有重复元素 ,才添加进结果集合result2
result2.add(list.get(i));
}
}
System.out.println(result2);//输出result2
}

}

输出

原始集合[8, 2, 8, 7, 6, 5, 2, 7]
[2, 5, 6, 7, 8]
[8, 2, 7, 6, 5]

回答(2):

import java.util.ArrayList;
import java.util.List;

public class ArrayListTest {
public static void main(String[] args) {
/**
 * 定义功能:清除ArrayList集合中的重复元素
 */
List arraylist = new ArrayList();
arraylist.add("test1");
arraylist.add("test2");
arraylist.add("test3");
arraylist.add("test1");
arraylist.add("test2");
arraylist.add("test1");

System.out.println(arraylist);
singleElement(arraylist);
System.out.println(arraylist);
}

public static void singleElement(List arraylist) {
/**
 * 下面的size是在发生改变的,所以这样每次删除一次的时候都会影响到结果,有些结果是遍历不到的。
 */
for (int i = 0; i < arraylist.size() - 1; i++) {
Object object_x = arraylist.get(i);
for (int j = i + 1; j < arraylist.size(); j++) {
if (object_x.equals(arraylist.get(j))) {
arraylist.remove(j);
j--;
}
}
}
}
}