Java--collection--List,Set,Map

来源:互联网 发布:flash player修复软件 编辑:程序博客网 时间:2024/04/24 06:45

集合: 数据结构

 
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如何对集合内部的元素排序
   自定义排序规则