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