文章目錄
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()