【从零开始学习JAVA | 第二十三篇】集合体系结构

5443612af38f44a4824110f7382812f3.png

目录

前言:

单列集合:     

set与list的区别:

双列集合:

map的特点:

总结:


前言:

                JAVA中为我们提供了很多集合,这些集合都有自己很独特的特点,因此我们要学习所有的集合,但是在学习所有的集合之前,我们还是先为大家介绍一下JAVA的集合体系结构,这样有利于大家更好的理解整个JAVA集合框架。

整个集合其实都可以分为两大类:单列集合与双列集合

单列集合:     

23f2f8d0b19247fd84ff260292ee0ba5.png

Java中的单列集合指的是一种只包含一个元素的集合,也被称作为单元素集合或者是单值集合,单列集合一次只能添加一个元素。在Java中,单列集合主要有以下几种:

1. Singleton Set
Singleton Set是一种只包含一个元素的集合,并且该元素不允许为空。Singleton Set中只有一个元素,所以它的size()方法返回值为1。

示例代码:

Set<String> singletonSet = Collections.singleton("hello");

2. Singleton List
Singleton List也是一种只包含一个元素的集合,但是它是有序的,并可以包含重复元素。Singleton List中只有一个元素,所以它的size()方法返回值为1。

示例代码:

List<String> singletonList = Collections.singletonList("hello");

需要注意的是,Singleton集合是不可变的,即不能向其中添加或删除元素。如果需要添加或删除元素,需要创建一个新的集合对象并赋值。此外,Singleton集合的元素只能通过迭代器进行访问。

set与list的区别:

list和set是Java中两种常用的集合类型,它们的主要区别在于以下几个方面:

1. 元素顺序
list是有序集合,即它维护元素的插入顺序,并且可以根据元素的索引(即插入顺序)进行访问和操作。set是无序集合,它不维护元素的插入顺序,并且不能根据元素的索引进行访问和操作。
2. 元素的唯一性
list可以包含重复元素,即同一个元素可以出现多次;set元素是唯一的,即同一个元素只能出现一次。
3. 实现方式
list可以通过数组或链表实现;set可以通过哈希表或树结构实现。因此,list的访问速度较快,但是添加、删除元素和查找元素需要较长的时间;而set的添加、删除元素和查找元素速度较快(平均时间复杂度为O(1)),但是访问元素需要较长的时间(时间复杂度为O(n))

总之,如果需要维护元素的顺序、允许包含重复元素、并且需要根据索引进行访问和操作,应该使用list;如果需要保证元素的唯一性、不需要维护元素的顺序,并且查找、添加与删除操作的性能要求较高,应该使用set。

双列集合:

Java中的双列集合指的是一种包含两个元素的集合,它们可以存储类型不同的键值对,通常用于构建关联数组、映射等数据结构。在Java中,双列集合主要有以下几种:

1. Map
Map是一种键值对映射的集合,其中键和值都可以是任意类型的对象。Map中的键是唯一的,因此不能存在重复的键。常用的实现类包括HashMap、LinkedHashMap、TreeMap等。

示例代码:

Map<String, Integer> map = new HashMap<>();
map.put("Java", 100);
map.put("Python", 90);
map.put("C++", 80);

map常见的实现类: 

1. Hashtable
Hashtable是一种线程安全的键值对映射集合,与HashMap类似,但它的所有方法都是同步的。Hashtable也不允许键和值为空。Hashtable的实现方式是通过哈希表实现的。

示例代码:

Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("Java", 100);
hashtable.put("Python", 90);
hashtable.put("C++", 80);

2. LinkedHashMap
LinkedHashMap是一种维护插入顺序的Map,它记录了元素的插入顺序,并可以按照插入顺序进行遍历。LinkedHashMap是通过哈希表和双向链表实现的。

示例代码:

Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Java", 100);
linkedHashMap.put("Python", 90);
linkedHashMap.put("C++", 80);

3. TreeMap
TreeMap是一种按照键的自然顺序或者比较器顺序进行遍历的有序Map。默认情况下,TreeMap按照键的自然顺序进行遍历,如果需要自定义排序规则,可以通过实现Comparator接口实现。TreeMap是通过红黑树实现的。

示例代码:

Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Java", 100);
treeMap.put("Python", 90);
treeMap.put("C++", 80);

需要注意的是,Java中的双列集合都是基于Map接口实现的,因此它们都具有Map接口的基本方法,如put、get、containsKey等。在使用双列集合时,需要根据具体的使用场景和性能要求选择合适的实现类。

map的特点:

Map是一种键值对的数据结构,它的特点有以下几个:

1. 存储方式:Map 以键值对的形式来储存数据,即每个键都与一个值相关联。这种方式方便了数据的快速查找和访问,比如可以通过键快速获取对应的值。

2. 独一无二的键:Map 中的键是唯一的,即同一时刻只能存在一个与给定键相关联的值。如果插入的键已经存在,则新插入的值会覆盖旧值。

3. 无序性:Map 中的键值对是无序的,不像数组和列表那样有固定的顺序。我们可以根据键来进行查找和访问,而不关心它们在 Map 中的位置。

4. 可以存储不同类型的值:Map 中的键值对可以存储不同类型的数据,这使得 Map 成为存储和操作各种类型数据的理想数据结构。

5. 可以动态修改:Map 是一种动态数据结构,它可以根据需要进行插入、删除或修改键值对,这使得它非常灵活和实用。

总结:

        本文详细的介绍了单列集合与双列集合,为我们搭建了集合的一个基本的体系构架,后面我们也会一步一步的完善这些构架里面的内容。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

69e9169c980f43e0aad31ff9ada88a9c.png

猜你喜欢

转载自blog.csdn.net/fckbb/article/details/131407587
今日推荐