集合的总结

2018-07-12 07:34:59来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

List

List:有序(存入和取出的顺序一致),元素都有索引值,元素可以重复。
* Set:元素不能重复,无序。
*
**** List:特有的常见方法:有一个共性的特点就是可以操作角标。
*1.添加
* void add();
*
* 2.删除
* Object remove(index)
*
* 3.修改
* Object set (index,element)
*
* 4.获取
* Object get(index)
* int indexOf(object)
* List subList(from,to)
* List:
* 1.Vector 内部是数组数据结构,是同步的。增删,查询都很慢。
* 2.ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
* 3.LinkedList:内部是链表数据结构,是不同步的。增删元素的速度是很快的。
除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。
这些操作允许将链接列表用作堆栈、队列或双端队列。

Set
Set:元素不可以重复,是无序,并且最多包含一个 null 元素
  |--TreeSet:可以对Set集合中的元素进行排序,是不同步的
  判断元素唯一性的方法:就是根据比较方法返回是否是0。

TreeSet对元素进行排序的方式之一:
让元素自身具备比较功能,元 素就需要实现Comparable接口。覆盖compareTo方法。
如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序,可以使用
TreeSet集合的第二种排序方式之二:
TreeSet不能直接对元素进行比较,它是根据元素的比较结果排序,如果元素不具备比较功能,让集合自身具备比较功能。
定义一个类实现Comparator接口,覆盖compare方法。
将该类对象作为参数传递给TreeSet集合的构造函数。

集合的一些技巧:
需要唯一吗?
需要:Set
  需要制定顺序:
  需要:TreeSet
  不需要:HashSet
但是想要一个和存储一致的顺序:LinkedHashSet


不需要:List
List有着和存储一致的顺序
  需要频繁增删吗?
  需要:LinkedList
  不需要:ArrayList

Map
Map:一次添加一对元素。Collection一次添加一个元素
Map也称为双列集合,Collection集合称为单列集合
其实map集合中存储的就是键值对。

map集合中必须保证键的唯一性。
常用方法:
1.添加
  value put (key,value):返回前一个和key关联的值,如果没有返回null
2.删除
  void clear():清空map集合
  value remove():根据指定的key翻出这个键值对
3.判断
  boolean containsKey(key)
  Boolean contiansValue(value)
  Boolean isEmpty()
4.获取
  value get(key):通过键获取值,如果没有该键返回null
  当然可以通过返回null,来判断是否包含指定键,

5.获取大小

  int size():获取键值对的个数。

Map常用的子类:
  |---Hashtable:内部结构是哈希表,是同步的。不允许null作为键,null作为值。

  |--Properties:用来存储键值对的配置文件的信息,可以和io技术相结合。

  |---HashMap:内部结构是哈希表,不是同步的。允许null作为键,null作为值。

  |---LinkdedHashMap:内部结构是哈希表和链表,迭代顺序和存储数据一致,不是同步的。

  |---TreeMap:内部结构是红黑树,不同步,可以对Map集合中的键进行排序。

编程技巧:当TreeMap被填充后,就可以调用keySet(),取得key组成的Set,然后使用toArray()方法生成key的数组(集合collection中的类都有toArray()方法),接下来使用Array的binarySearch()方法在已排序的数组中快速查找对象。


如何记录每个容器的结构和所属体系?
看名字:
List
ArrayList
LinkedList

Set
HashSet
TreeSet
后缀名即是该集合的体系。
前缀名即是该集合的数据结构。
看到array就要想到数组,就要想到查询快,有角标。
看到link就要想到链表,就要想到增删快,就要 add remove
看到hash就要想到哈希表,就要想到唯一性,就要想到元素覆盖hashcode和equals方法
看到tree就要想到二叉树,就要想到排序,就要想到两个接口Comparator,Comparable
而且通常这些常用的集合容器都是不同步的。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:shiro + jwt 实现 请求头中的 rememberMe 时间限制功能

下一篇:(三) 创建Hello-Service消费者 - Spring Cloud学习笔记