集合基础介绍(一)

admin 44 2024-02-12 21:42:53

  集合是Java中临时存储数据以及操作数据的一个非常重要的组成部分,掌握并熟练的使用集合将有利于实现相关的业务逻辑,提高代码质量,下面介绍集合相关的基础信息。

  集合是java中用来存储一系列的对象的引用容器,在使用时可以根据对象的引用调用相关的对象。

  1、单例集合(collection):将数据进行一个一个的存储。

  2、双例集合(map) :基于 Key 与 Value 的结构存储数据。

  单例集合与双例集合的区别:

  1、collection是单例集合,元素是孤立存在的(就像单身),向集合中储存元素是以单个元素的方式储存。

  2、Map是双例集合,元素是成对以Key-Value的形式存在的(就像夫妻),每个元素都是以键和值的形式存储在Map中,可以通过键找到向对应的值。

  3、Map中键的值是唯一的不允许重复,但是值可以重复并允许为null。

List

  特点:

  有序:有序(元素存入集合的顺序和取出的顺序一致)。List 中每个元素都有索引标记。 可以根据元素的索引标记(在 List 中的位置)访问元素,从而精确控制这些元素。

  可重复:List 允许加入重复的元素大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。更确切地讲,List 通常允许满足 e1.equals(e2) 的元素重复加入容器

常用实现类

  1、ArrayList类

  特点:

  底层由数组实现,存储的数据具有有序性,重复性,且查询效率高,增删效率低,线程不安全,JDK1.8后使用了延迟加载,只有添加元素是才创建数组,扩容的大小为原来的1.5倍题

  2、LinkedList类

  特点:

  底层由双向链表实现,特点是查询速度慢(需要遍历查询),增删效率高(只需要修改前后两个节点),线程不安全

  3、Vector类(现在已经很少使用)

  特点:

  Vector 底层是用数组实现的,相关的方法都加了同步检查,因此“线程安全,效率低”。没有延时加载,一旦初始化后立即创建数组,数组长度为10,扩容大小为原来的2倍。

Set

  特点:

  存储无序且不重复的数据,其余数学中的“集合”更为接近。无序指 Set 中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切地讲,新元素如果和 Set 中某个元素通过 equals() 方法对比为 true,则只能保留一个。

常用实现类

  1、HashSet类

  特点:

  HashSet中元素的存放顺序都是无序的,且不可保存重复的元素,允许保存为null的元素,底层是通过HashMap实现的(HashSet就是一个简化版的HashMap),所以查询和增删效率都比较高。线程不安全。

  2、LinkedHashSet类

  特点:

  元素唯一,元素无索引,元素存取有序

  由哈希表结构保证元素唯一,由链表保证元素存取有序

  3、TreeSet类

  特点:

  具备Set的基本特点元素不允许重复,但是TreeSet 是一个可以对元素进行排序的容器。底层实际是用 TreeMap 实现的,内部维持了一个简化版的 TreeMap,通过 key 来存储 Set 的元素。

  1、HashTable类

  特点:

  Hashtable是遗留类,很多映射的常用功能与HashMap类似,不同的是它承自Dictionary类,并且是线程安全的,任一时间只有一个线程能写Hashtable,并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。Hashtable不建议在新代码中使用,不需要线程安全的场合可以用HashMap替换,需要线程安全的场合可以用ConcurrentHashMap替换。大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  2、HashMap类

  特点:

  HashMap是Map接口的接口实现类,它采用哈希算法实现,是Map接口最常用的实现类。由于底层采用了哈希表存储数据,所以要求键值不能重复,如果发生重复,新值将会替换旧值。HashMap在查找、删除修改方面都有非常高的效率。

  HashMap的初始扩容为16长度,扩容因子为0.75,即数组的使用长度为数组长度的0.75倍时进行扩容,扩容为原来的2倍,即2N

  3、ConcurrentHashMap

  特点:

  主要就是为了应对hashmap在并发环境下不安全而诞生的,ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,final,CAS等lock-free技术来减少锁竞争对于性能的影响,是线程安全的。大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  ConcurrentHashMap避免了对全局加锁改成了局部加锁操作,这样就极大地提高了并发环境下的操作速度。

  4、TreeMap类

  特点:

  也是基于Map的实现类,效率要比HashMap低,可以实现通过键值进行排序,底层是由红黑树进行实现的。

  5、LinkedHashMap类

  特点:

  LinkedHashMap是HashMap的一个子类,其特殊实现的仅仅是保存了记录的插入顺序,所以在Iterator迭代器遍历LinkedHashMap时先得到的键值是先插入的(也可以在构造时用带参构造方法来改变顺序为按照使用进行排序),其存储沿用了HashMap结构外还多了一个双向链表,具备HashMap的所有特性和缺点。总结:唯一的区别就是LinkedHashMap多了一个双向循环链表也因此多了插入排序的功能。

  6、Properties类

  特点:

  Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常改变的,为了方便用户的配置,能让用户够脱离程序本身去修改相关的变量设置。就像在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。

集合基础介绍(一)

集合基础介绍(一)

上一篇:足球预测比赛 足球比赛推荐:都灵vs乌迪内斯 意甲 球赛事前瞻,足球预测亚盘
下一篇:踢足球的好处有哪些
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

返回顶部小火箭