2024欧洲杯,2024欧洲杯决赛CCTV完整回放
0
2025 / 01 / 10
集合是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文件,是以键值对的形式进行参数配置的。
发表评论
暂时没有评论,来抢沙发吧~