参考
方法一:需要2个容器,1个迭代去重,1个作为结果容器。
此方法其实想法比较简单也是正常思路:
packagecom.yonyou.test;
importjava.util.List;
importjava.util.Vector;
publicclassTest{
publicstaticvoidmain(String[]args){
Listvector=newVector();
vector.add("Hello");
vector.add("world");
vector.add("Hello");
System.out.println("去重之前vector中的集合为:"+vector.toString());
ListnewVector=newVector();
for(Stringstr:vector)
{
if(!newVector.contains(str))
newVector.add(str);
}
System.out.println("去重之后vector中的集合为:"+newVector.toString());
}
}
方法二:
对于方法一而言,这也许是一个小窍门。利用的是Set集合中不允许出现重复的元素。
packagecom.yonyou.test;
importjava.util.HashSet;
importjava.util.List;
importjava.util.Set;
importjava.util.Vector;
publicclassTest{
publicstaticvoidmain(String[]args){
Listvector=newVector();//这里的vector可以换成ArrayList或者LinkedList,效果都一样
vector.add("Hello");
vector.add("world");
vector.add("Hello");
System.out.println("去重之前vector中的集合为:"+vector.toString());
Setset=newHashSet(vector);
vector=newVector(set);
System.out.println("去重之后vector中的集合为:"+vector.toString());
}
}
方法三:参考
当需要去重的东西是对象,而不是简单类型时,就需要用到如下的高级操作了。
很棒的方法,比迭代然后contains快捷高效。
/**
*将列表中重复的用户移除,重复指的是name相同
*
*@paramuserList
*@return
*/
publicstaticArrayListremoveDuplicteUsers(ArrayListuserList){
Sets=newTreeSet(newComparator(){
@Override
publicintcompare(Peopleo1,Peopleo2){
returno1.getName().compareTo(o2.getName()); //定义People对象的比较函数
}
});
s.addAll(userList); //利用set的比较函数,去除重复用户
returnnewArrayList(s); //再转换回List
}