众所周知,java的list集合中可以添加相同的元素。那么,当存放了相同元素的时候,如何去重呢?
以下是三种方法:
public static List<String> distinct(List<String> list) {
List<String> list2 = new ArrayList<String>();//新建一个list用于返回
for(int i=0;i<list.size();i++) {//遍历原list
String e = list.get(i);
if(!list2.contains(e)) {//如果新列表不含原第i个元素
list2.add(e);//就把它添加到新列表
}
}
return list2;
}
public static List<String> distinct2(List<String> list) {
for(int i=0;i<list.size();i++) {//逐个比较每两个
for(int j=i+1;j<list.size();j++) {
if(list.get(i).equals(list.get(j))) {
list.remove(j);
j--;//每次移除完,后面的元素往前顶,而光标继续往后了
}
}
}
return list;
}
public static List<String> distinct3(List<String> list) {//利用set不能存放相同的元素
Set<String> s = new HashSet<String>();
s.addAll(list);//set在加入元素的时候,会舍去后加进来的但已存在的元素
list.clear();
list.addAll(s);
return list;
}