Java代码工具箱_用Set给List/Vector去重
方法一:需要2个容器,1个迭代去重,1个作为结果容器。
此方法其实想法比较简单也是正常思路:
package com.yonyou.test; import java.util.List; import java.util.Vector; public class Test{ public static void main(String[] args) { List<String> vector=new Vector<String>(); vector.add("Hello"); vector.add("world"); vector.add("Hello"); System.out.println("去重之前vector中的集合为:"+vector.toString()); List<String> newVector=new Vector<String>(); for(String str:vector) { if(!newVector.contains(str)) newVector.add(str); } System.out.println("去重之后vector中的集合为:"+newVector.toString()); } }
方法二:
对于方法一而言,这也许是一个小窍门。利用的是Set集合中不允许出现重复的元素。
package com.yonyou.test; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.Vector; public class Test{ public static void main(String[] args) { List<String> vector=new Vector<String>(); //这里的vector可以换成ArrayList或者LinkedList,效果都一样 vector.add("Hello"); vector.add("world"); vector.add("Hello"); System.out.println("去重之前vector中的集合为:"+vector.toString()); Set<String> set=new HashSet<String>(vector); vector=new Vector<String>(set); System.out.println("去重之后vector中的集合为:"+vector.toString()); } }
方法三:参考
当需要去重的东西是对象,而不是简单类型时,就需要用到如下的高级操作了。
很棒的方法,比迭代然后 contains 快捷高效。
/** * 将列表中重复的用户移除,重复指的是name相同 * * @param userList * @return */ public static ArrayList<People> removeDuplicteUsers(ArrayList<People> userList) {
Set<People> s = new TreeSet<People>(new Comparator<People>() { @Override public int compare(People o1, People o2) { return o1.getName().compareTo(o2.getName()); //定义People对象的比较函数 } });
s.addAll(userList); //利用 set 的比较函数,去除重复用户 return new ArrayList<People>(s); //再转换回List }