12章总结

一.集合类概述
        java.util包中提供了一些集合类,这些集合类又被称为容器。

集合类与数组的不同之处:
        数组的长度是固定的,集合的长度是可变的:数组用来存放基本类型的数据,集合用来存放对象的引用。

        常用的集合有List集合、Set集合和Map集合,其中List集合与Set集合继承了Collection接口,各接口还提供了不同的实现类。

二.Collection接口
        Collection接口是层次结构中的根接口,构成Collection的单位称为元素。

        Collection接口通常不能直接使用,但该接口提供了添加元素、删除元素、管理数据的方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对List集合与Set集合是通用的。

如何遍历集合中的每个元素?

        通常遍历集合,都是通过迭代器(Iterator)来实现。Collection接口中的iterator()方法可返回在此Collection进行迭代的迭代器

迭代:重复执行某一行为。

【例12.1】向“购物车”添加商品

代码:

 结果:

三.List集合
        List集合包括List接口以及List接口的所有实现类。

        List集合中的元素允许重复,各元素的顺序就是对象插入的顺序。类似Java数组,用户可以通过使用索引(元素在集合中的位置)来访问集合中的元素。

     

        1.List接口
        LIst接口继承了Collection接口,因此包含Collection接口中的所有方法。此外,List接口还定义了两个非常重要的方法:
 

(1)get(int index):获得指定索引位置的元素。
 
(2)set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象。

2.List接口的实现类 
        List接口的常用实现类有ArrayList类与LinkedList类:

(1)ArrayList类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢。

(2)LinkList类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象。需要向集合中插入、删除对象时,使用LinkedList类实现的List集合的效率较高;但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率较低。

        

        使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合。通过ArrayList类、

LinkedList类分别实例化List集合的代码如下:

List<E>list=new ArrayList<>();
List<E>list2=new LinkedList<>();

在上面的代码中,E可以是合法的Java数据类型。

        List接口的常用方法:

添加:add()

获取:get()

删除:remove()

更改:set()

【例12.2】举例说明List集合的常用方法

代码:

结果:

 

四.Set集合
        Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但Set集合中不能包含重复对象。

        Set集合由Set接口和Set接口的实现类组成。Set接口继承了Collection接口,因此包含Collction接口的所有方法。

Set接口常用的实现类有HashSet类与TreeSet类:

(1)HashSet类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证Set集合的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用null元素。

(2)TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口,因此TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序。

【例12.3】使用TreeSet类实现自然(升序)排序

代码:

 结果:

 

五.Map集合
        Map集合没有继承Collection接口,其提供的是key到value的映射。Map集合中不能包含相同的key,每个key只能映射一个value。key还决定了存储对象在映射中的存储位置,但不是由key对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值。

        Map集合包括Map接口以及Map接口的所有实现类。


        1.Map接口
        Map接口提供了将key映射到值的对象。一个映射不能包含重复的key,每个key最多只能映射到一个值
————————————————
版权声明:本文为CSDN博主「OYFYO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/OYFYO/article/details/132836377

五.Map集合
        Map集合没有继承Collection接口,其提供的是key到value的映射。Map集合中不能包含相同的key,每个key只能映射一个value。key还决定了存储对象在映射中的存储位置,但不是由key对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值。

        Map集合包括Map接口以及Map接口的所有实现类。


        1.Map接口
        Map接口提供了将key映射到值的对象。一个映射不能包含重复的key,每个key最多只能映射到一个值.

2.Map接口的实现类
        Map接口常用的实现类有HashMap类和TreeMap类:

(1)HashMap类是基于哈希表的Map接口的实现,此实现提供所有可选的映射操作,并允许使用null值和null键,但必须保证键的唯一性。HashMap类通过哈希表对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

(2)TreeMap类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系时,TreeMap类比HashMap类性能稍差。由于TreeMap类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null。

【例12.4】输出Map集合中书号(键)和书名(值)
代码:

结果:

 

改进使输出一一对应:

代码:

 结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/267681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows下使用vccode+cmake编译cuda程序

1、在vscode中安装Nsight Visual Studio Code Edition 在vscode中安装插件能够对cuda的代码进行语法检查 2、编写cuda程序 #include <iostream>__global__ void mykernelfunc(){}; int main() {mykernelfunc<<<1,1>>>();std::cout << "hel…

C++ 比 C语言增加的新特性 2

1.C新增了带默认值参数的函数 1.1 格式 格式&#xff1a;返回值 函数名&#xff08;参数1初始值1&#xff0c;..........&#xff09;{} 例如&#xff1a;void function&#xff08;int a10&#xff09;{} 调用&#xff1a;不需要更改参数的值&#xff1a;function&#x…

Kubernetes 学习总结(40)—— Kubernetes 之 自动伸缩 HPA、VPA、CA和CPA详解

前言 Kubernetes 提供了多种自动伸缩机制&#xff0c;例如 HPA&#xff08;Horizontal Pod Autoscaling&#xff09;&#xff0c;可以根据不同情况动态调整 Pod 副本数量。此功能使 Pod 能够有效地处理当前流量&#xff0c;而无需管理员不断干预来调整副本数量。除了 HPA 之外…

每日一题——LeetCode160.相交链表

个人主页&#xff1a;白日依山璟 专栏&#xff1a;Java|数据结构与算法|每日一题 文章目录 1. 题目描述示例1&#xff1a;示例2&#xff1a;提示&#xff1a; 2. 思路3. 代码 1. 题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的…

HarmonyOs4.0基础(一)

目录 一、HarmonyOs系统定义 1.1系统的技术特性(三大特征) 1.1.1、硬件互助、资源共享 1.1.2、一次开发、多端部署(面向开发者) 1.1.3、统一OS&#xff0c;弹性部署(支持多种API&#xff1a;ArkTs、JS、C/C、Java) 1.2、系统的技术架构 二、Harmony OS项目搭建 2.1、(D…

Github 2023-12-24 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-24统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目5Jupyter Notebook项目2C项目1C项目1Go项目1Java项目1JavaScript项目1Ruby项目1 Serverless Frame…

【零基础入门Docker】如何构建Web服务Dockerfile?

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门Docker专栏https://blog.csdn.net/arthas777/category_12455882.html 目录 步骤1&#xff1a;第一步是构建我们的Docker文件&#xff0c;您可以使用vim编辑器。 步骤2&#xff1a;下一步是使用docker build命令…

【Python机器学习系列】一文搞懂机器学习中的转换器和估计器(附案例)

一、引言 表格数据一套完整的机器学习建模流程如下&#xff1a; 在机器学习中&#xff0c;转换器&#xff08;Transformer&#xff09;和估计器&#xff08;Estimator&#xff09;是两个重要的概念&#xff0c;转换器和估计器在机器学习中扮演不同的角色&#xff0c;但它们通常…

【论文解读】CNN-Based Fast HEVC Quantization Parameter Mode Decision

时间&#xff1a;2019 年 级别&#xff1a;SCI 机构&#xff1a;南京信息工程大学 摘要 随着多媒体呈现技术、图像采集技术和互联网行业的发展&#xff0c;远程通信的方式已经从以前的书信、音频转变为现在的音频/视频。和 视频在工作、学习和娱乐中的比例不断提高&#xff0…

Python如何将图片转换成字符

PIL(Python Image Library)库是Python平台上一个功能强大的图像处理标准库&#xff0c;支持图像的存储、显示和处理&#xff0c;几乎可以处理所有图片格式&#xff0c;如图像的压缩、裁剪、叠加、添加文字等等。 安装PIL库:pip install pillow from PIL import Image ascii_cha…

35c3 krautflare

参考这篇文章可以彻底了解本题的漏洞所在 https://xz.aliyun.com/t/6527 由于Math.expm1经过patch以后的返回值不可能是-0&#xff0c;但是patch的地方是在typer优化中&#xff0c;所以实际上如果没有优化的话是可以返回-0的&#xff0c;这就意味着如果我们先不停地Math.expm1…

手机技巧:安卓微信8.0.45测试版功能来了

目录 一、更新介绍 二、本次功能更新介绍 2.1 小程序界面优化 2.2 小程序个性化推荐支持关闭 三、其他实用的微信使用长按小技巧 3.1、长按对话框 3.2、长按搜索 3.3、长按相册 3.4、长按视频 3.5、长按表情包&#xff08;能开启2个技巧&#xff09; 3.6、长按音频文…

Linux——环境变量与本地变量

环境变量与本地变量 文章目录 环境变量与本地变量1. 环境变量1.1 命令行参数1.2 环境变量PATH1.3 环境变量的概念和相关操作1.3.1 用命令查看环境变量1.3.2 用命令添加环境变量&#xff1a;1.3.2 用命令删除环境变量1.3.3 利用代码查看环境变量1.3.4 利用代码修改或添加环境变量…

运行时和编译时使用的so库不同是否影响可执行文件执行

引子 近日遇到如下问题: 1.如果可执行文件依赖的so库在编译和执行阶段使用的名字一样&#xff0c;但是内容不一样&#xff0c;比如运行时相比于编译时在so库里增加了几个api定义&#xff0c;so库还可以正常使用吗&#xff1f; 2.如果可执行文件依赖的so库在编译和执行阶段使用的…

一文带你认识JVM

&#x1f697;&#x1f697;&#x1f697;今天给大家分享的关于JVM的一些基本认识。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; ✈️✈…

Lambda表达式超详解

目录 背景 Lambda表达式的用法 函数式接口 Lambda表达式的基本使用 语法精简 变量捕获 匿名内部类 匿名内部类中的变量捕获 Lambda的变量捕获 Lambda表达式在类集中的使用 Collection接口 List接口 Map接口 总结 背景 Lambda表达式是Java SE 8中的一个重要的新特性.…

cygwin64环境搭建

文章目录 cygwin64环境搭建概述为了编译GNU软件需要安装的组件如下当缺软件的时候, 可以用搜索功能END cygwin64环境搭建 概述 cygwin64主页 https://cygwin.com/ 用起来确实有用linux的感觉, 而且兼容性特别好. GNU的工程全部能编译过. 编译后的exe在win10上也运行的很正正…

Python教程(17)——python模块是什么?python模块详解

Python模块简介 模块是一个包含了Python定义和语句的文件&#xff0c;可用于将功能组织成可重用和可维护的代码块。每个Python文件都可以作为一个模块&#xff0c;模块可以包含变量、函数、类或可执行代码。通过使用模块&#xff0c;我们可以将代码分离成逻辑单元&#xff0c;…

代码规范-代码注释,及注释辅助工具

文章目录 代码规范-代码注释&#xff0c;及注释辅助工具1.常见代码块注释提示标签2.JSDoc3.注释格式 参考&#xff1a;https://knightyun.github.io/2020/03/13/js-comment-format 代码规范-代码注释&#xff0c;及注释辅助工具 1.常见代码块注释提示标签 descfileauthorpara…

抖音小店怎么做?三大核心做好,一周起店不是问题!

大家好&#xff0c;我是电商糖果 有不少朋友说自己的店铺开好之后&#xff0c;不会做。 店铺一直没有流量&#xff0c;也不出单。 糖果做电商七年了&#xff0c;做抖店四年了&#xff0c;不敢自夸自己做店有多牛逼。 但是一个项目我可以做四年之久&#xff0c;我的做店方法…