list使用會有一些比較奇怪的問題,使用時需要注意
1. 情況1--list remove有誤
想要按照索引值刪除list的,但是會出現下列問題
public class listutils
originalist.removeall(removelist);
return originalist;
} public static void main(string args)
}
本來預期的結果應該是[23,2] 但是實際結果是[2]
問題原因: list 允許重複的資料,但是用removeall/或者remove的時候,並不一定刪除乙個,也會將重複的資料刪除。
解決辦法
/**
* remove some indexs of list
* * @param originalist
* @param removepositionlist
* @return
*/public list removelistright(list originalist, listremovepositionlist)
return originalist;
}
同樣list刪除注意要從後往前刪除, 不能從前往後, 因為這種方式的問題在於,刪除某個元素後,list的大小發生了變化,而你的索引也在變化,所以會導致你在遍歷的時候漏掉某些元素。比如當你刪除第1個元素後,繼續根據索引訪問第2個元素時,因為刪除的關係後面的元素都往前移動了一位,所以實際訪問的是第3個元素。因此,這種方式可以用在刪除特定的乙個元素時使用,但不適合迴圈刪除多個元素時使用。
public class test
}system.out.println(list.size());
}}
2. list交集
list1.retainall(list2)
3. list 去重
public static list removeduplicate(list list)
4. arraylist執行緒不安全, 想要使用執行緒安全的list,需要使用一下方式
list> nocityslist= collections.synchronizedlist(new arraylist<>());
List集合的用法總結
listpsrson new arraylist person.add jackie person.add peter person.add kobe person.add martin person.add marry system.out.println person person.remove...
List和List 的用法
list理解為容器,list裡面裝的是object,list 裡面裝的就是前面宣告的list。舉例 取出所有角色為客服的人員,客服的role sn為3 listmanagerlist managerservice.getmanagerlistbyrole 3 取出每個人所含有的所有角色,list裡裝...
list用法示例詳解
list 元素是有序的 怎麼存的就怎麼取出來,順序不會亂 元素可以重複 角標1上有個3,角標2上也可以有個3 因為該集合體系有索引,arraylist 底層的資料結構使用的是陣列結構 陣列長度是可變的百分之五十延長 特點是查詢很快,但增刪較慢 執行緒不同步 linkedlist 底層的資料結構是鍊錶...