Java--collection--List,Set,Map
集合: 数据结构
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如何对集合内部的元素排序
自定义排序规则
补充:软件开发 , Java ,