Java--collection--List,Set,Map

2014-11-24 10:33:40 · 作者: · 浏览: 0

集合: 数据结构

abstract data
数据的操作方法
abstract data type
数据的操作方法 + 数据

Collection

Iterator:只能前序遍历,并且可以在遍历的同时删除元素

ListIterator
前序遍历
后序遍历:必须要先将迭代器移动到集合末尾,才可以从后往前遍历
插入元素:在迭代器当前位置左边添加元素
删除元素:
前序遍历删除迭代器左边元素
后序遍历删除迭代器右边元素
修改元素:
修改前必须跳过一个元素
可以连续修改多次
得到当前的索引(下标)

List:
关心元素的索引,元素顺序
允许元素重复

ArrayList 动态数组/泛型数组
优点:
快速遍历,随机访问
缺点:
插入,删除慢,占用连续内存空间

LinkedList 链表
单向不循环链表
单向循环链表
双向不循环链表
双向循环链表

无头链表
优点:
插入,删除快
缺点:
不提供随机访问,所使用的下标表示该节点距离头节点之间经过的节点个数

Stack:先进后出 FirstInLastOut
Queue:先进先出 FirstInFirstOut


Set:Hash-->哈希
不关心元素索引
不允许重复,不关心元素顺序
计算元素下标:hashCode % bucket(数组长度)

HashSet
无序的,未分类的集合
自定义对象必须重写hashCode和equals方法
为HashSet提供判断对象是否相同的依据

LinkedHashSet
Hash的排序版本, 严格按照插入顺序排序

TreeSet
Hash的排序版本,按照元素大小排序
默认为从小到达排序

equals:比较两个对象内容是否相同

compareTo:比较两个对象大小
必须重写,自定义对象的时候必须重写该方法

hashCode和equals
当两个对象中的所有属性都一样的时候,一般认为这
2个对象为同一个对象

Map
键值映射关系key-value
关心key的唯一性

HashMap
未排序
自身不带迭代器,只能通过视图遍历

条目视图 key-value
key视图
value视图

LinkedHashMap
按照元素顺序排序

TreeMap
按照key大小排序

Comparator:比较器
告诉TreeMap如何对集合内部的元素排序
自定义排序规则