两个重要的接口:
Collection接口 又包括 Set(HashSet TreeSet) 和 List(ArrayList Vector)
util Map接口(HashMap TreeMap HashTable)
List 有序可重复
ArralyList顺序结构 线程不安全的(不能保证同步)
method:
add()
get(i) 返回第i个元素
contain() 判断是否包含某元素
indexOf() 返回下标
toArray() 转换为对象数组 Object[] objs = ...
iterator() 返回迭代器 Iterator it = ...Iterator有next()方法和hasNext()方法
LinkedList 离散结构 线程不安全的(不能保证同步)
add()
具有ArrayList几乎全部的method
比ArrayList多实现了队列的方法
addFirst()
addLast()
peek() 获取但不移除第一个元素
pop() 弹出第一个元素 并删除
Set
线程不安全(不同步,多线程涉及) 允许null值 无序的 可以添加重复元素但加不进入
无法使用for遍历 可以使用迭代器Iterator it = set.iterator while(it.hasNext())
HashSet
add()
hasNext() 如果有下一个元素 返回true 并指向一个元素
next() 返回迭代器的下一个元素 如果不知道下一个元素的数据类型 可以用Object obj;
TreeSet
LinkedSet 离散结构 有序的 其余特点与Set相同
LinkedHashSet
添加对象到集合里 即使属性相同 也认为是两个不同对象
重写hashCode()和equals()方法 可以解决上面的问题
重写hashCode():基本数据类型可以直接返回其hashCode 或者返回定值(感觉hashCode本身就很扯)
重写equals():若果每一个基本数据类型的equals返回true,则返回true。
集合的add()方法调用了对象的equals方法。
Map
无序的
键值对 不能有重复的键
键、值都可以为null
通过key来遍历map
无法添加key相同而value不同的元素
HashMap HashTable TreeMap LinkedHashMap
put(key,value) 添加元素
Set keys = map.ksySet(); 键值集合
使用迭代器访问keys
map.get(key) 输入key返回value
LinkedHashMap
有序的
HashTable
基于hash表实现Map接口
键和值都不能是null 值可以重复
线程安全的(同步)
TreeMap
基于红黑树
根据键值自然排序(依赖于Comparator接口)
键的数据类型一致 键不允许是null
本文出自 “HOOGA!” 博客,谢绝转载!