1、队列:单向和双向
一、单向:一端操作1、一般:FIFO
2、优先和堆栈: LIFO
二、双向:两端操作,头或尾操作
子类ArrayDeque
2、Enumeration
比较古老的接口
枚举Enumeration,作用和Iterator类似,都是输出数据
方法:
hasMoreElements()
nextElement()
应用
Vector :elements()
StringTokenizer
3、Hashtable与Properties
一、Hashtable 与HashMap的区别 (面试题)
1、主要:Hashtable线程安全,同步,效率相对低下
HashMap 线程不安全,非同步,效率相对高
2、父类:Hashtable 是 Dictionary HashMap 是 AbstractMap
3、null: Hashtable键与值不能为null
HashMap 键最多一个null,值可以多个null
二、Properties
1、作用:读写资源配置文件
2、键与值只能为字符串
3、方法:
setProperty(String key, String value)
getProperty(String key)
getProperty(String key, String defaultValue)
后缀:.properties
store(OutputStream out, String comments)
store(Writer writer, String comments)
load(InputStream inStream)
load(Reader reader)
.xml
storeToXML(OutputStream os, String comment) :UTF-8字符集
storeToXML(OutputStream os, String comment, String encoding)
loadFromXML(InputStream in)
三、相对路径与绝对路径
1、绝对路径 : 盘符: /
2、相对路径 : 当前项目、工程
四、类路径加载资源文件
类所在的根路径
1、类.class.getResourceAsStream("/")
2、Thread.currentThread().getContextClassLoader().getResourceAsStream("")
4、其他Map实现类
一、引用分类(面试)
强引用:StrongReference:引用指向对象,gc (Garbage collection)运行时不回收
软引用:SoftReference gc运行时可能回收(jvm内存不够)
弱引用:WeakReference gc运行时立即回收
虚引用:PhantomReference 类似于无引用,主要跟踪对象被回收的状态,不能单独使用,必须与引用队列(ReferenceQueue) 联合使用
二、三个Map接口实现类
1、WeakHashMap:键为弱引用
2、IdentityHashMap:键比较地址去重,注意常量池的对象
3、EnumMap:枚举map,要求键为枚举的值
5、同步容器与只读控制
一、同步控制:多线程并发访问集合的线程安全。
常用容器 ArrayList HashSet HashMap 等都是线程不安全的
Collections提供了synchronizedXxx()方法,将指定容器包装成同步
synchronizedList()
synchronizedSet()
synchronizedMap()
二、不可变设置:“只读”访问, Collections提供了三种方法
emptyXxx() 空的不可变的集合
singletonXxx() 一个元素不可变的集合
unmodifiableXxx() 不可变容器
6、总结
重点:1 3 6 9
一、一张图
二、三个知识点
1、迭代器
1)、java.util.Iterator + hasNext() next() remove()
2)、foreach :java.lang.Iterable +iterator()
2、比较器
1)、实体类可以排序 java.lang.Comparable +compareTo
2)、排序比较器(解耦、多种排序规则) java.util.Comparator +compare
List+Collections.sort()
TreeSet
TreeMap
3、泛型: <> 泛型类、泛型方法、泛型接口、泛型擦除、通配符 ? extends super 泛型嵌套
三、六个接口
Collection Set List Map Iterator Comparable
四、九个常用类 添加、删除、修改、查看 +遍历
1、ArrayList:数组 查看多于修改
add(元素) add(索引,元素) remove(元素) remove(索引) set(索引,元素) get(索引)
for+get foreach() Iterator ListIterator
2、LinkedList :链表,修改多于查看 ,多了些链头与链尾的方法
3、HashSet: 重写 hashcode +equals
add(元素) remove(元素)
foreach() Iterator
4、TreeSet :元素可以排序 或者提供排序的业务类
5、HashMap: 键不能重复 必须重写 hashcode +equals ,值可以重复
put(k,v) remove(k) get(K) containsKey containsValue
获取值:values() keySet()+get entrySet()+getValue()
获取键:keySet entrySet() +getKey()
获取键与值: keySet()+get entrySet() +getKey() getValue()
6、Properties :资源配置文件 相对路径获取文件
7、Hashtable:键与值都不能为null 线程安全
8、Stack:栈
9、Collections:工具类