記錄學習的點滴(Java基礎知識)

1,List,Set,Map用法以及區別


①List,Set,Map是否繼承自Collection接口?
List,Set是,Map不是。 Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素。一些Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接繼承自Collection的類,Java JDK提供的類都是繼承自Collection的"子接口",如:List和Set。
注意:Map沒有繼承Collection接口,Map提供key到value的映射。一個Map中不能包含相同key,每個key只能映射一個value。Map接口提供3種集合的視圖,Map的內容可以被當做一組key集合,一組value集合,或者一組key-value映射。

②List按對象進入的順序保存對象,不做排序或編輯操作。Set對每個對象只接受一次,並使用自己內部的排序方法(通常,你只關心某個元素是否屬於Set,而不關心它的順序--否則應該使用List)。Map同樣對每個元素保存一份,但這是基於"鍵"的,Map也有內置的排序,因而不關心元素添加的順序。如果添加元素的順序對你很重要,應該使用 LinkedHashSet或者LinkedHashMap.

詳細介紹:
List特點:元素有放入順序,元素可重複
Map特點:元素按鍵值對存儲,無放入順序
Set特點:元素無放入順序,元素不可重複(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的)
List接口有三個實現類:LinkedList,ArrayList,Vector
LinkedList:底層基於鏈表實現,鏈表內存是散亂的,每一個元素存儲本身內存地址的同時還存儲下一個元素的地址。鏈表增刪快,查找慢
ArrayList和Vector的區別:ArrayList是非線程安全的,效率高;Vector是基於線程安全的,效率低
Set接口有兩個實現類:HashSet(底層由HashMap實現),LinkedHashSet
SortedSet接口有一個實現類:TreeSet(底層由平衡二叉樹實現)
Query接口有一個實現類:LinkList
Map接口有三個實現類:HashMap,HashTable,LinkeHashMap 
HashMap非線程安全,高效,支持null;HashTable線程安全,低效,不支持null
SortedMap有一個實現類:TreeMap
其實最主要的是,list是用來處理序列的,而set是用來處理集的。Map是知道的,存儲的是鍵值對
set 一般無序不重複.map kv 結構 list 有序 。

我們知道TreeMap的key是有順序的,是自然順序,也可以指定比較函數。但默認不是按插入的順序。 爲了讓Map JSON化後是按照插入順序顯示,可以使用LinkedHashMap吧。它內部有一個鏈表,保持插入的順序。迭代的時候,也是按照插入順序迭代,而且迭代比HashMap快。

IdentityHash--鍵值可重複的HashMap,使用IdentityHashMap,key允許重複,只要兩個對象的地址不相等即可。

寫法實例

		// 無序鍵值可以重複
		Map<String, Object> map = new IdentityHashMap<String, Object>();
		map.put(new String("1a"), "1a");
		map.put(new String("qd"), "qd");
		map.put(new String("ha"), "ha");
		map.put(new String("1b"), "1b");
		map.put(new String("1b"), "3b");

2,String,StringBuffer,StringBuilder用法以及區別
①三者在執行速度方面的比較:StringBuilder >  StringBuffer  >  String
②String:字符串常量
StringBuffer:字符創變量
StringBuilder:字符創變量
③StringBuilder與StringBuffer
StringBuilder:線程非安全的
StringBuffer:線程安全的
當我們在字符串緩衝去被多個線程使用是,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當然大多數情況下就是我們是在單線程下進行的操作,所以大多數情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。



發佈了37 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章