Java 滚轮复习(集合)

       Android中使用的集合也是很常见的场景 毕竟Android也是基于Java开发 今天就简单的总结一下Java中的集合 对于以前知识的一个复习

言归正传不说那么多的废话

Java中的集合总体大概分成了两大部分

1.collection 2.map

collection下面大概有三种集合 

(1)set集合 

set集合的特性 :

不可以有重复的元素(继承自collection  set共有属性   不可重复元素)  

set进行判断不是使用==进行判断 而是使用equals进行判断 

set集合进行存储的时候 会把新建的对象与已有的对象使用equals方法进行判断,如果返回false则set集合就会进行接受 否则拒绝

set集合里面存储的数据是没有顺序的 类似于一个罐子的方式进行存储

set集合的子类:

       (1).hashset 具有良好的查找和存取功能向hashset集合进行存储对象的时候hashset会调用该对象的hashcode方法来得到该对象的code值 根据code值来决定该对象的存储位置
       (2).linkedhashset 也是通过对象的code值进行保存数据的 是使用链表的形式进行维护元素的顺序 当我们遍历这个集合的时候 是使用它的这些添加顺序进行访问元素
                  linkedhashset是需要维护元素的插入数据的,所以它的性能要相对于hashset来说是比较低的 但是使用迭代访问set里面的元素的时候此集合会有很好的性能
        (3)SortedSet  主要适用于排序
                  TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态
        (4)EnumSet    枚举类型的集合(专门为枚举类集合设计的集合)很少使用就不过多的总结

(2)list集合  

list集合特性:

存储必须要有顺序    每个元素都有相对应的索引 可以通过索引来访问指定位置的元素 索引是按照元素的添加顺序来的

list集合子类

        (1)ArrayList(比较常用的集合类)
基于数组实现 可以动态的增加长度 再分配给object数组
         (2)Vector 
和arraylist的使用方法一样 不做过多的解释
        (2.1)Stack
此集合是Vector的实现类 用于模拟栈先进先出的的数据结构
         (3)LinkedList
        实现list接口能进行队列的操作 可以通过索引来访问集合中的随机元素
        实现deque接口 可以用来双端队列使用 也可以当做栈来使用

(3)queue:特性:

保持成一个队列形式(先进先出)的顺序  队列的头部保存着队列中存放时间最长的元素,队列的尾部保存着队列中存放时间最短的元素   不允许随机的来访问元素

map:

类似与一个小型的数据库 以键值对的形式进行存储的对象可以通过键来找到相应的值  因此此集合里面存储着两组值 一种是用来保存键 一种是用来保存值 两组值都可以是任意数据类型的  map的key不允许有重复 所以两个key进行比较总是返回fasle

总结:
set:
HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet
 对于普通的插入、删除操作,LinkedHashSet比HashSet要略慢一点,这是由维护链表所带来的开销造成的。不过,因为有了链表的存在,遍历LinkedHashSet会更快
list:
ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现
Queue代表了队列,Deque代表了双端队列(既可以作为队列使用、也可以作为栈使用)
因为数组以一块连续内存来保存所有的数组元素,所以数组在随机访问时性能最好。所以的内部以数组作为底层实现的集合在随机访问时性能最好。
内部以链表作为底层实现的集合在执行插入、删除操作时有很好的性能
进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好
map:
HashMap和Hashtable的效率大致相同,因为它们的实现机制几乎完全一样。但HashMap通常比Hashtable要快一点,因为Hashtable需要额外的线程同步控制
2) TreeMap通常比HashMap、Hashtable要慢(尤其是在插入、删除key-value对时更慢),因为TreeMap底层采用红黑树来管理key-value对
3) 使用TreeMap的一个好处就是: TreeMap中的key-value对总是处于有序状态,无须专门进行排序操作 

ps:技术小白可能不是全面 请多关照

猜你喜欢

转载自blog.csdn.net/qq_42250299/article/details/88317935