List的兩個子類的特點
因為兩個類都實現(xiàn)了List接口,所以里面的方法都差不多比伏,那這兩個類都有什么特點呢敞曹?
ArrayList:
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組账月,查詢快,增刪慢澳迫。
LinkedList:
底層數(shù)據(jù)結(jié)構(gòu)是鏈表局齿,查詢慢,增刪快橄登。
這個兩個個子類有什么區(qū)別和共同點抓歼?
ArrayList和LinkedList的區(qū)別
ArrayList底層是數(shù)組結(jié)果,查詢和修改快
LinkedList底層是鏈表結(jié)構(gòu)的,增和刪比較快,查詢和修改比較慢
共同點:都是線程不安全的
在開發(fā)中使用哪個?
查詢多用ArrayList
增刪多用LinkedList
如果都多ArrayList
ArrayList線程安全的方案
如果使用ArrayList需要考慮線程安全的問題,有兩種方案:
可以使用Collections工具類中的synchronizedList方法可以將ArrayList變成線程安全的
Listlist= Collections.synchronizedList(newArrayList());
使用java.util.concurrent包下面的CopyOnWriteArrayList拢锹,使用方式跟ArrayList一樣