总览
Colleciton接口
Set和List:继承Collection
- Set和List对比:
- Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
- List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
- Set和List具体子类:
- Set
- HashSet:以哈希表的形式存放元素,插入删除速度很快。
- List
- ArrayList:动态数组
- LinkedList:链表、队列、堆栈。
- Linked 改快读慢
- Array 读快改慢
- Hash 两者之间
- Set
Map接口
- 说明:Map 接口不是 Collection 接口的继承。而是从自己的用于维护键-值关联的接口层次结构入手。按定义,Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,Map中的key不要求有序,不允许重复。value同样不要求有序,但可以重复。
- 我们可以把这个接口方法分成三组操作:改变、查询和提供可选视图。
- 改变操作允许您从映射中添加和除去键-值对。键和值都可以为 null。但是,您不能把Map 作为一个键或值添加给自身。
1 | Object put(Object key, Object value)//将指定的值与此映射中的指定键关联,返回值是被替换的值。 |
- 查询操作允许您检查映射内容:
1 | Object get(Object key)//返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null |
- 最后一组方法允许您把键或值的组作为集合来处理。
1 | public Set keySet()//映射中键的集合必须是唯一的 |
- HashMap 类和 TreeMap 类
- 在Map 中插入、删除和定位元素,HashMap 是最好的选择。
- 但如果您要按顺序遍历键,那么TreeMap 会更好。