1:String類,字符串是常量,他們的值在建立以後不能更改,能夠共享。java
equals()用來比較兩個字符串的值,==只有當這兩個實例指向同一個字符串對象才返回true數組
2:線程安全的可變字符串類StringBuffer,主要操做是append()和insert()。緩存
3:可變字符串類StringBuilder,不保證同步,用在字符串緩存區被單個線程使用的時候,比StringBuffer快。安全
三者的使用狀況:多線程
a)若是偶爾對剪子的字符串常量進行拼接,那麼可使用String,他足夠簡單並且輕量級。app
b)若是須要常常對字符串進行拼接、累加操做,使用StringBuffer或者StringBuilder框架
c)單線程使用StringBuilder,他比StringBuffer快,多線程中選後者,他是線程安全的。ide
4:集合類Collection,表明多個對象的集合,分爲工具
a)Queue類:隊列類,先進先出的隊列ui
b)List類,列表類,元素有序,且容許重複
c)Set類,集合類,元素能夠有序也能夠無序,不容許重複。
映射類Map:存儲多個鍵值對。
5:Collections與Collection的區別:前者是對後者集合類進行各類操做的服務類。
a)Collection是個java.util下的接口,它提供了對集合對象進行基本操做的通用接口方法,collection接口在java類庫中有不少具體的實現,它的意義是爲各類具體的集合提供了最大化的統一操做方式。
b)conllections是個java.util下的實體類,它包含各類有關集合操做的靜態方法,提供一系列靜態方法實現對各個集合的搜索、排序、線程安全化等操做,就像一個工具類,服務於java的Collection框架。
6:列表類List
a)LinkedList鏈式訪問,以指針相連,適合於在鏈表中間須要頻繁進行插入和刪除操做。
b)ArrayList相似數組的形式,按照序號存儲,隨機訪問速度很是快。
c)Vector向量按照各元素序號存儲,數組大小能夠動態增加,對於大容量數據存儲效率較高。
d)Stack堆棧,先進後出的數組。
7:這些類的對比與選擇:
若是涉及到堆棧隊列等操做,應該考慮List中的stack,queue
對於須要快速插入刪除元素,應該使用linkedlist
若是須要快速隨機訪問元素,應該選用arraylist
若是程序在單線程環境中,選用非同步類
若是在多線程中,選用同步類vector、stack和hashtable以及其子類。
8:map選擇
hashtable和hashmap相似,可是hashtable是同步的,可是hashmap容許null來做爲key和value值。
weakhashmap是一種改進的hashmap,他對key進行弱引用,若是一個key再也不被外部引用,則被gc回收。