1.Java的容器都有哪些渠驼?
主要分為Collect和Map容器。
其中Collect容器又細(xì)分為:Set榛鼎、List、HashSet做裙、TreeSet、LinkedHashSet歌亲、ArrayList菇用、LinkedList、Verctor陷揪。
Map容器分為:HashMap惋鸥、HashTable杂穷、TreeMap、LinkedHashMap卦绣。
2.Collection和Collections有什么區(qū)別耐量?
java.util.Collection是一個集合接口,提供了對集合對象的通用操作方法滤港。List廊蜒、Set、Queue都實現(xiàn)自Collection溅漾。
java.util.Collections是一個包裝工具類山叮,提供了有關(guān)集合的靜態(tài)方法。例如搜索添履、排序等屁倔。
3.List、Set暮胧、Map之間的區(qū)別是什么锐借?
List、Set都繼承自Collection接口往衷。Map是與Collection同級的接口钞翔。
List:元素可重復(fù),插入有序席舍。
Set:元素不可重復(fù)布轿,插入無需。
Map:采用K:V方式存儲數(shù)據(jù)来颤,其中K唯一驮捍。
4.HashMap和HashTable有什么區(qū)別?
HashMap和HashTable都實現(xiàn)了Map接口脚曾。
HashMap:KV都允許出現(xiàn)null值(可以出K:null、null:V启具、null:null的情況)本讥,HashMap是線程不安全的。
HashTable:KV都不允許出現(xiàn)null值鲁冯,HashTable是線程安全的拷沸。
如果需要線程安全的業(yè)務(wù)場景,目前推薦的是ConcurrentHashMap薯演,而非HashTable撞芍。
5.如何決定使用HashMap還是TreeMap?
HashMap的key由hashCode()實現(xiàn)跨扮,數(shù)據(jù)結(jié)構(gòu)由鏈表序无、紅黑樹組成验毡,key是無序的。
TreeMap的key要求實現(xiàn)Compareble帝嗡,數(shù)據(jù)結(jié)構(gòu)由紅黑樹組成晶通,key是字典序或者自定義序。
如果需求結(jié)果有序哟玷,則使用TreeMap狮辽,否則使用HashMap。
6.說一下HashMap的實現(xiàn)原理巢寡?
7.說一下HashSet的實現(xiàn)原理喉脖?
8.ArrayList和LinkedList的區(qū)別?
9.如何實現(xiàn)數(shù)組和List之間的轉(zhuǎn)換抑月?
數(shù)組轉(zhuǎn)換List:arrays.asliat(arr)树叽。
List轉(zhuǎn)換數(shù)組:list.toArray()。
10.ArrayList和Vector的區(qū)別是什么爪幻?
11.Array和ArrayList有何區(qū)別菱皆?
12.在Queue中,poll()和remove()有什么區(qū)別挨稿?
13.哪些集合類是線程安全的仇轻?
14.迭代器Iterator是什么?
15.Iterator怎么使用奶甘?有何特點篷店?
16.Iterator何ListIterator有什么區(qū)別?
17.怎么確保一個集合不能被修改臭家?