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

这篇具有很好参考价值的文章主要介绍了【从零开始学习JAVA | 第二十三篇】集合体系结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

目录

前言:

单列集合:     

set与list的区别:

双列集合:

map的特点:

总结:


 文章来源地址https://www.toymoban.com/news/detail-591795.html

前言:

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

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

单列集合:     

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

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 是一种动态数据结构,它可以根据需要进行插入、删除或修改键值对,这使得它非常灵活和实用。

总结:

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

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

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

 

 

到了这里,关于【从零开始学习JAVA | 第二十三篇】集合体系结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从零开始学习JAVA | 第二十二篇】BigInteger

    目录  前言:  BigInterger: BigInteger常见的方法: 总结:         本篇我们将介绍BigInteger这个比较实用一点的API,这个API在我们实际写项目中都是很实用的API,因此大家应该对这个API有更加熟练的掌握。 在Java中,整数类型int和long的取值范围是有限的,超出该范围的整数无法

    2024年02月15日
    浏览(51)
  • 【从零开始学习JAVA | 第二十九篇】Stream流

    目录 前言: Stram流: 设计目标: 使用步骤: 1.先得到一条Stream流,并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项: 总结:         本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果

    2024年02月17日
    浏览(37)
  • 【从零开始学习JAVA | 第二十七篇】JAVA期末练习(PTA)

    目录 前言: R7-5 Count the letters in a string (统计字符串中的字符) R7-1 找素数 R7-3 电话号码同步(Java) 总结:         临近期末,我也更新一下PTA上的JAVA大题,希望各位都可以考出一个好的成绩。 (Count the letters in a string) (统计字符串中的字符) Write a method that counts th

    2024年02月16日
    浏览(39)
  • 【从零开始学习JAVA | 第二十篇】常见API介绍 Math

    目录 前言:  MATH: Math类中的常用方法: 总结:                 本篇往后我们会详细介绍一些常用的API,今天我们介绍的是Math的常用方法。但是其实我们不需要记住所有的方法,在日常工作中自己学会查询API文档就可以了。 Math类是Java中提供的一个标准类, 它包含了许多

    2024年02月15日
    浏览(30)
  • 【从零开始学习JAVA | 第二十一篇】常见API介绍 System

    目录 前言: System: System类中静态方法: 总结:                 system 是一个很底层的 API,是一个工具类, 提供了一些与系统相关的方法 。他在我们写项目的时候提供了一些非常实用的方法,本篇将会介绍一些实用的system API 的方法调用。 System类是Java语言提供的一个

    2024年02月15日
    浏览(38)
  • 从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)

    1.1数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2集合类体系结构 1.3Collection 集合概述和使用 Collec

    2024年02月10日
    浏览(27)
  • 从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)

    1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 类型: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: 类型1,类型2…: 指定多

    2024年02月09日
    浏览(29)
  • 从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)

    1.1 什么是不可变集合 ​ 是一个长度不可变,内容也无法修改的集合 1.2 使用场景 ​ 如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。 ​ 当集合对象被不可信的库调用时,不可变形式是安全的。 简单理解: ​ 不想让别人修改集合中的内容 比如

    2024年02月07日
    浏览(38)
  • 【第二十三篇】Burpsuite+SQL注入实现登录绕过等(靶场实战案例)

    存在一个业务场景如下 筛选商品时,后端查询语句如下: 只有商品名匹配且该商品已发布(released=1),客户端才能回显数据。 点击Lifestyle时,页面回显 生活方式 有关商品,并可知参数以GET方

    2024年04月10日
    浏览(37)
  • 【从零开始学习C++ | 第二十一篇】C++新增特性 (上)

    目录  前言: 委托构造函数: 类内初始化: 空指针: 枚举类: 总结:         C++的学习难度大,内容繁多。因此我们要及时掌握C++的各种特性,因此我们更新本篇文章,向大家介绍C++的新增特性。 委托构造函数是指一 个类的构造函数调用另一个类的构造函数,以减少代

    2024年02月13日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包