方法一:需要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 }
