List集合去重以及集合set使用分析!

2021-09-01 04:26:04 字數 810 閱讀 8073

private static void removeduplicate(listlist)
使用linkedhashset實現list集合去重

這裡有個地方要注意,add操作是新增元素的引用,那麼這意味著如果你改變了該元素,list中對應的元素也被改變了

而addall操作則是拷貝,當你改變元素,list中對應的元素仍不變

public static void main(stringargs)

set.add("3"); //重複資料,不會寫入

set.add(null); //可以寫入空資料

iteratoriter = set.iterator();

// iter.remove();

system.out.println("!!!"+iter);

system.out.println("!!!"+iter.next());

system.out.println("!!!"+iter.next());

while(iter.hasnext())

}

通過執行程式可以發現,iter.next()是迭代器向前進1,然後輸出當前val

而iter.remove是,輸出當前val,然後回到上一位置

每個set都有個head,如果輸出一次,刪除一次,那麼每次刪除後,都會回到head!

當對head執行remove操作時,無任何效果!

特別需要注意的是,lista.contains(new int)比較的是位址,不是內容!!!

利用set集合進行list集合高效去重

最近幫朋友做專案,自己也在學習資料結構和演算法分析,發現要想專案高效率的執行,資料結構和演算法是必須要掌握的一門技術,剛好專案中就碰到了處理資料的地方。首先我先說說需求吧,有兩個集合a b,在a集合去除b集合中people物件的資料,只要a集合中people的name和sublist集合中peopl...

List集合去重

第一種 list每remove掉乙個元素以後,後面的元素都會向前移動,此時如果執行i i 1,則剛剛移過來的元素沒有被讀取。string str1 newstring abcde1 string str2 newstring abcde2 string str3 newstring abcde3 s...

List集合去重

首先,我們都知道list集合是乙個儲存有序可重複元素的容器,那麼如果要對乙個list去重有哪些方法呢?方式一 迴圈list中的所有元素然後刪除重複 public static list removeduplicate list list return list public static list ...