Java--容器相關

List

有序可以重複,可以通過索引遍歷arraylist,也可以通過索引遍歷

ArrayList

底層是數組,線程不安全,效率高,適合有較多的查詢操作

linkedlist

底層是雙向鏈表,線程不安全,效率高,適合有較多的刪除跟添加操作

vector

線程安全。效率低

Set

無序不可重複,set容器不像arraylist一樣可以通過索引進行訪問元素。只能通過迭代器的方式進行迭代訪問

HashSet

底層是通過hashmap實現

Treeset

Treeset兩種排序方式:
1.元素可以排序,java.lang.comparable+cpmpareto 採用空構造器new Treeset()
2.排序業務類 java.util.comparator+compare 採用構造器new TreeSet(Comparator<? superE>comparator)
TreeSet在數據添加的時候進行排序,並且添加後更改數據不會影響排序,所以一般對TreeSet裏面的數據進行final聲明

Map

HashMap

線程不安全,非同步。效率高
父類:AbstractMap
特點:鍵最多一個null,值可以多個null

HashTable

線程安全,同步。效率低
父類:Dictionary
特點:鍵與值不能爲null

子類:class properties:讀寫資源配置文件,要求鍵與值只能爲字符串
方法:
public synchronized Object setProperty(String key, String value);
public String getProperty(String key);
public String getProperty(String key, String defaultValue);

存儲:存儲爲後綴爲properties的文件
public void store(Writer writer, String comments);
public void store(OutputStream out, String comments);
public synchronized void load(InputStream inStream);
public synchronized void load(Reader reader);
存儲爲後綴爲xml的文件
public void storeToXML(OutputStream os, String comment);
public void storeToXML(OutputStream os, String comment, String encoding);
public synchronized void loadFromXML(InputStream in);

pros.store(new FileOutputStream(new File("D:/db.properties")), "db配置");//絕對路徑
pros.load(new FileReader("D:/db.properties"));//絕對路徑
pros.load(demo1.class.getResourceAsStream("/db.properties"));//相對路徑
pros.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(""));

TreeMap

確保key可以排序,提供Key比較器
public TreeMap(cpmparator<?super K>comparator)

WeakHashMap

鍵爲弱引用,gc運行立即回收

IdentityHashMap

鍵只以地址去重,而不是比較hashcode與equals,鍵是常量池中的字符串

EnumMap

要求鍵爲枚舉的值

collections:相關工具類

主要方法:shuffle():洗牌,swap(),reverse(),

//用來控制容器線程可靠
List<String> list=new ArrayList<String>();
list.add("ddd");
list.add("sdfs");
List<String> list1=Collections.synchronizedList(list);
只讀設置:
1.空的不可變集合:emptyxxx()
emptyList()emptyMap()emptySet()
2.一個元素不可變的集合:singletonxxx()
singleton(T o)、SingletonSet<E>singletonList(T o)singletonMap(K key, V value)3.不可變容器:unmodifiablexxx()
unmodifiableSet(Set<? extends T>)unmodifiableList(List<? extends T>)unmodifiableMap(Map<? extends K, ? extends V>)

//不可改變容器設置
List<String> list=new ArrayList<String>();
list.add("ddd");
list.add("sdfs");
List<String> list1=Collections.unmodifiableList(list);

隊列

單向隊列:Queue

特點:一般FIFO,比較特殊的優先隊列和堆棧LIFO
offer()跟poll()方法

雙向隊列(兩端進行訪問):Deque

可以進行棧的實現

Enumeration(已經被Iterator取代)

特點:線程安全,StringTokenizer()是其子類,跟String的split相似,只不過該類不支持正則表達式
相關方法:hasMoreElement() ,nextElement()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章