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()

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