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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM