Java学习19-List、set容器

目录

一.List:

1.List基本介绍:

2.List接口方法:

3.List的三种遍历方式:

4.ArrayList:

(1)ArrayLis的基本介绍:

(2)ArrayList底层结构和源码分析:

5.Vector:

(1)Vector基本介绍:

(2)Vector底层结构与ArrayList的比较:

6.LinkedList:

(1)LinkedList的基本介绍:

(2)LinkedList的底层操作机制:

7.ArrayList和LinkedList的比较:

二.set:

1.基本介绍:

2.遍历Set:

3.HashSet:

(1)HashSet全面说明:

(2)HashSet扩容机制:

4.LinkedHashSet:

(1)基本介绍:

(2)底层机制:


一.List:

1.List基本介绍:

  • List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复。
  • List集合中的每个元素都有其对应的顺序索引,即支持索引。
  • List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

2.List接口方法:

3.List的三种遍历方式:

//通过静态方法,对Book对象按照价格升序进行排序
public static void main(String[] args) {public static void sort(List list){for (int i =0;i<list.size()-1;i++){for (int j =0;j<list.size()-1-i;j++){Book book1 = (Book)list.get(j);Book book2 = (Book)list.get(j+1);if(book1.getPrice()>book2.getPrice()){list.set(j,book2);//set方法实现交换list.set(j+1,book2);}}}}}

4.ArrayList:

(1)ArrayLis的基本介绍:
  • ArrayList是由数组来实现数据存储的,ArrayList可以加入多个null。
  • ArrayList基本等同于Vector,除了ArrayList是线程不安全的。
(2)ArrayList底层结构和源码分析:

5.Vector:

(1)Vector基本介绍:
  • Vector底层是一个对象数组,Vector是线程同步的,即线程安全。
(2)Vector底层结构与ArrayList的比较:

6.LinkedList:

(1)LinkedList的基本介绍:
  • LinkedList底层实现了双向链表和双端队列。
  • 可以添加任何元素(元素可以重复),包括null。
  • 线程不安全,没有实现同步。
(2)LinkedList的底层操作机制:

7.ArrayList和LinkedList的比较:

二.set:

1.基本介绍:

set接口是无序的(添加和取出的顺序不一致),没有索引。不允许重复元素,所以最多包含一个null。

2.遍历Set:

        //迭代器Iterator iterator = set.iterator();while (iterator.hasNext()){Object obj = iterator.next();System.out.println(obj);}//增强forfor (Object obj:set){System.out.println(obj);}set.remove(null);

3.HashSet:

(1)HashSet全面说明:
  • HashSet实现了Set接口,实际上是HashMap(数组+链表+红黑树)。
  • 可以存放null,但是只能有一个null。(不能有重复元素、对象)
  • HashSet不保证元素是有序的,取决于Hash后,再确定索引的结果。
(2)HashSet扩容机制:

4.LinkedHashSet:

(1)基本介绍:
  • LinkedHashSet是HashSet的子类,LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表。
  • LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的(有序的)。
  • LinkedHashSet不允许添加重复元素。
(2)底层机制:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研回顾纪录--科软考研失败并调剂兰州大学软件工程专业复试经历

1.背景 本人工作一年后决定考研&#xff0c;遂于2023年4月底离职。5月到家后开始学习。本科东北大学软件工程专业&#xff0c;绩点3.2/5&#xff0c;按照百分制计算是82分。本科纯属混子&#xff0c;只有一个四级551&#xff0c;一个数学竞赛省二等奖&#xff0c;大创学校立项…

算法刷题笔记 最长连续不重复子序列(C++实现)

文章目录 题目描述解题思路实现代码 题目描述 给定一个长度为n的整数序列&#xff0c;请找出最长的不包含重复的数的连续区间&#xff0c;输出它的长度。 输入格式 第一行包含整数n。第二行包含n个整数&#xff08;均在 0∼10^5范围内&#xff09;&#xff0c;表示整数序列。…

vue打包时报错文件包过大

1.问题&#xff1a;npm run build 之后出现 2. 翻译之后意思就是某块过大 3. 解决办法&#xff1a;在vite.config.ts文件上添加 build: { chunkSizeWarningLimit: 1600, }, 4.最终打包

UnityLeapMotion流程记录

突然接到一个LeapMotion的项目&#xff0c;回想起上次做LeapMotion还是在几年前&#xff0c;但是当时没有去记录&#xff0c;所以这次就相当于是重新走了一遍流程。很苦恼&#xff0c;赶紧记录下来。防止之后忘记。这次的需求还是比较简单的&#xff0c;用手滑动控制图片序列播…

在Visual Studio2022中同一个项目里写作业,有多个cpp文件会报错

为了省事&#xff0c;在同一个项目里写很多个题目&#xff0c;结果只有一个cpp文件时没出错&#xff0c;写了2个cpp文件再想运行时就出错了&#xff1b; 将不相关的cpp文件移出去 在源文件中对其点击右键&#xff0c;找到“从项目中排除”&#xff1b; 结果如图&#xff0c;剩…

【Android】 怎么设置蓝牙等待设备连接和接收数据

项目需求 1.打开蓝牙之后等待别的蓝牙设备进行连接。 2.连接之后等待别的设备发送数据&#xff0c;然后接收数据。 3.跟别的蓝牙设备断开连接值进入到等待状态&#xff0c;等待别的蓝牙设备连接。 解决方式 //非手机终端的UUID public static final UUID SPP_UUID UUID.fro…

深度学习21天 —— 卷积神经网络(CNN):识别验证码( 第12天)

目录 一、前期准备 1.1 标签数字化 1.2 加载数据 1.3 配置数据 二、其他 2.1 损失函数 categorical_crossentropy 2.2 plt.legend(loc ) 2.3 history.history 活动地址&#xff1a;CSDN21天学习挑战赛 学习&#xff1a;深度学习100例-卷积神经网络&#xff08;CNN&…

通过 SFP 接口实现千兆光纤以太网通信2

Tri Mode Ethernet MAC IP 核结构 时钟网络 IP 核内部时钟网络结构如下图所示。其中&#xff0c;tx_mac_aclk 为 AXI-Stream 发送接口的同步时钟&#xff0c; rx_mac_aclk 为 AXI-Stream 接收接口的同步时钟。由于在设计中没有使用 MDIO 接口&#xff0c;所以不存在时钟信号 …

二人订单共享结束制:终身受益的新模式

在当今快速发展的互联网时代&#xff0c;一个创新的商业模式总能引起广泛关注。其中&#xff0c;“二人订单共享结束制”以其独特的魅力&#xff0c;吸引了众多消费者和创业者的目光。这一模式不仅为消费者带来了实惠&#xff0c;更为创业者提供了一个全新的平台。 只需购买一…

Android的刷机模式

高通为例子。不看不知道&#xff0c;一看原来这么多。想以前做博通方案&#xff0c;就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄&#xff1f;&#xff01;。。。 基本参考这篇&#xff1a;https://www.cnblogs.com/bluestorm/p/18129830 常用的应该就是OTA&…

OpenHarmony及鸿蒙应用的屏幕亮度获取以及设置

目录 一.前置知识 二.具体实现 一.前置知识 对应的OpenHarmony版本:V3.2 查找资料发现V3.2版本的OpenHarmony没有获屏幕亮度的接口,只有设置屏幕亮度的接口,这个就很奇怪,所以我最终的方案是获取屏幕亮度使用老的接口,设置屏幕亮度使用新的接口,这样就完成了这个需求…

C/C++中的 extern 和extern“C“关键字详解(通俗易懂)

前言 1、C/C extern关键字用法 2、extern "C"用法 正文 1、extern关键字 extern其实就是一个声明&#xff0c;明确指出一个语句是声明&#xff0c;比如extern int i ;这是声明变量i&#xff0c;而不是定义i&#xff0c;定义i则是int i&#xff08;声明不开辟内存空…

网络数据库后端框架相关面试题

面试是工作的第一步&#xff0c;面试中面试官所提出的问题千奇百怪&#xff0c;其中关于网络数据库后端框架面试题汇总如下&#xff1a; 1&#xff0c;关系型数据库和非关系型数据库的区别 关系型数据库主要有 MYsql Iracle SQLSever等 相对于非关系型数据库的优势为查询效率…

【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源码编译安装

本人使用的服务器是2G2核 ubuntu22.04 前置工作 muduo库源码github仓库地址&#xff1a; muduo WIndows和Linux平台的boost源码包下载(zip是Windows版&#xff0c;tar.gz是Linux版&#xff0c;你也可以去boost官网下载最新版本) Boost C Libraries 由于muduo网络库是基于boo…

C语言| 输出*三角形

分析&#xff1a; ① 输入三角形主要分为两部分&#xff0c; 即输出空格和输出星号&#xff0c;要将它们分开&#xff0c;不用考虑空格数和星号个数之间的关系。 ② 从每行输出的空格个数来看&#xff0c;若总共输出n行&#xff0c;则第i行首先要输出n - i个空格&#xff0c;然…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统&#xff08;二&#xff09; 资源…

网络原理-TCP/IP --传输层(UDP)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…

std::scoped_lock

scope--范围 当创建一个 std::scoped_lock 对象时&#xff0c;它尝试取得其所给互斥量的所有权,即上锁。当控制权离开创建 scoped_lock 对象的作用域时&#xff0c;scoped_lock 会被析构&#xff0c;互斥量随之被释放。 链接

代码随想录35期Day54-JavaScript

Day54题目 ### LeetCode739每日温度 核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素". /*** param {number[]} temperatures* return {number[]}*/ var …

Linuxftp服务003虚拟用户登入

如果基于Vsftpd系统用户访问FTP服务器&#xff0c;系统用户越多越不利于管理&#xff0c;而且不利于系统安全管理&#xff0c;鉴于此&#xff0c;为了能更加的安全使用Vsftpd&#xff0c;需使用Vsftpd虚拟用户方式。 虚拟用户原理&#xff1a; 虚拟用户就是没有实际的真实系统…