List中数据去重复,可以有以下几种做法。主要利用:1、list有序,可以遍历判断重复。2、set不能插入重复数据
@Test
public void testDeleteListRepeat1(){
// 需要去重的集合
List<Integer> listOld = new ArrayList<>();
listOld.add(111);
listOld.add(222);
listOld.add(111);
listOld.add(222);
// 形成的新集合
List<Integer> listNew = new ArrayList<>();
//直接判断新list中是否有重复的数据(可以保证新list的顺序和原list去重后一样)
for (Integer listIndex : listOld) {
if (!listNew.contains(listIndex)) {
listNew.add(listIndex);
}
}
Iterator iterator = listNew.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
@Test
public void testDeleteListRepeat2(){
// 需要去重的集合
List<Integer> listOld = new ArrayList<>();
listOld.add(111);
listOld.add(222);
listOld.add(111);
listOld.add(222);
List<Integer> listNew = new ArrayList<>();
// 新建的set(作转换用)
Set setTransfer = new HashSet();
//利用set不能插入重复数据,将重复数据干掉(注意:原list到新list数据的顺序不能保证)
setTransfer.addAll(listOld);
listNew.addAll(setTransfer);
Iterator iterator = listNew.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
@Test
public void testDeleteListRepeat3(){
// 需要去重的集合
List<Integer> listOld = new ArrayList<>();
listOld.add(111);
listOld.add(222);
listOld.add(111);
listOld.add(222);
List<Integer> listNew = new ArrayList<>();
// 新建的set(作转换用)
Set setTransfer = new HashSet();
//利用set插入重复数据返回false 阻止新list重复
for (Integer listIndex : listOld) {
if (setTransfer.add(listIndex)) {
listNew.add(listIndex);
}
}
//遍历输出去重复后的list
Iterator iterator = listNew.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
@Test
public void testDeleteListRepeat4(){
// 需要去重的集合
List<Integer> listOld = new ArrayList<>();
listOld.add(111);
listOld.add(222);
listOld.add(111);
listOld.add(222);
//这种写法和 testDeleteListRepeat2 一样
List<Integer> listNew = new ArrayList<>(new HashSet<>(listOld));
//遍历输出去重复后的list
Iterator iterator = listNew.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
运行的测试结果如下: 111 222 Process finished with exit code 0