hashSet 去重 (无序)
HashSet不保证集合的迭代顺序
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("abc");
list.add("ccc");
list.add("aba");
list.add("aaa");
list.add("ccc");
list.add("ddd");
Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);
//缩减为一行
//List newList = new ArrayList(new HashSet(list));
System.out.println(newList);
[aba, abc, aaa, ddd, ccc, bbb]
LinkedHashSet 去重 (有序)
LinkedHashSet按照元素插入的顺序进行迭代,LinkedHashSet是非线程安全的。
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("abc");
list.add("ccc");
list.add("aba");
list.add("aaa");
list.add("ccc");
list.add("ddd");
LinkedHashSet hs = new LinkedHashSet(list);
List newList = new ArrayList();
Iterator it = hs.iterator();
while (it.hasNext())
{
newList.add(it.next().toString());
}
System.out.println(newList);
[aaa, bbb, abc, ccc, aba, ddd]
TreeSet 去重 (自然排序)
去重并且按照自然顺序(按照字母表顺序)排列
TreeSet是有序的Set集合
TreeSet是非线程安全的
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("abc");
list.add("ccc");
list.add("aba");
list.add("aaa");
list.add("ccc");
list.add("ddd");
List newList = new ArrayList(new TreeSet(list));
System.out.println(newList);
[aaa, aba, abc, bbb, ccc, ddd]
遍历判断赋给另一个list集合 (有序)
去重且有序
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("abc");
list.add("ccc");
list.add("aba");
list.add("aaa");
list.add("ccc");
list.add("ddd");
List<String> newList = new ArrayList<String>();
for (String str:list) {
if(!newList.contains(str)){
newList.add(str);
}
}
System.out.println(newList);
[aaa, bbb, abc, ccc, aba, ddd]