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 }

 

posted @ 2017-06-08 16:21  HolyGrail  阅读(1583)  评论(0编辑  收藏  举报
设计良好的程序将用户的注意力视为有限的宝贵资源,只有在必要时才要求使用。 ——《Unix编程艺术》