1.如果list中是基本数据类型,直接用set。
package com.hz;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(123);
list.add(34);
list.add(123);
list.add(34);
System.out.println("去重之前:");
show(list);
System.out.println();
Set<Integer> set = new HashSet<Integer>();
set.addAll(list);
List<Integer> newList = new ArrayList<Integer>(set);
System.out.println("去重之后:");
show(newList);
}
private static void show(List<Integer> list){
for (Integer integer : list) {
System.out.print(integer+"\t");
}
}
}
结果:
去重之前:
123 34 123 34
去重之后:
123 34
2.如果是对象,重写hashCode和equals方法,也可以使用第一种方法。
3.如果不想用set,但也需要重写hashCode和equals方法。
package com.hz;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
list.add(123);
list.add(34);
list.add(123);
list.add(34);
System.out.println("去重之前:");
show(list);
System.out.println();
// 建立一个用于临时存放不重复list元素的List集合。
List<Object> list_tmp = new ArrayList<Object>();
for (Object obj : list) {
// 注意contains方法是通过equals方法进行比较的所以你要根据你自己的需要看是否需要重写list对象里面的equals方法。
if (!list_tmp.contains(obj)) {
list_tmp.add(obj);
}
}
System.out.println("去重之后:");
show(list_tmp);
}
private static void show(List<Object> list) {
for (Object obj : list) {
System.out.print(obj + "\t");
}
}
}
结果:
去重之前:
123 34 123 34
去重之后:
123 34