Java的集合类:List、Set、Map

在 Java 中,集合类是一组有序或无序的数据元素的集合。Java 集合类可用于存储和操作各种数据类型的元素,如整数、字符串、对象等。集合类是动态的,可以在运行时根据需要调整其大小。

Java 集合类可以分为三类:

  1. List - 有序集合,允许重复元素
  2. Set - 无序集合,不允许重复元素
  3. Map - 键值对集合,不允许重复键,但允许重复值

Java 还提供了一些集合框架接口,包括 Collection、List、Set 和 Map。

下面我们将讨论 Java 中常用的一些集合类。

List

List 是一个有序的集合,允许重复元素。在 List 中,元素的位置是由它们在列表中的索引确定的。Java 中常用的 List 接口实现类有 ArrayList、LinkedList 和 Vector。

ArrayList

ArrayList 是一个动态数组,可以自动调整其大小以容纳更多的元素。以下是一个使用 ArrayList 添加和访问元素的例子:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");System.out.println("List size: " + list.size());
System.out.println("Element at index 0: " + list.get(0));
System.out.println("Element at index 1: " + list.get(1));

在上面的代码中,我们使用 ArrayList 来添加和访问元素。使用 add 方法添加元素,使用 get 方法访问元素,使用 size 方法获取列表的大小。

LinkedList

LinkedList 是一个双向链表,可以在任意位置插入或删除元素。以下是一个使用 LinkedList 添加和访问元素的例子:

List<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");System.out.println("List size: " + list.size());
System.out.println("Element at index 0: " + list.get(0));
System.out.println("Element at index 1: " + list.get(1));

在上面的代码中,我们使用 LinkedList 来添加和访问元素。使用 add 方法添加元素,使用 get 方法访问元素,使用 size 方法获取列表的大小。

Vector

Vector 是一个线程安全的动态数组,可以自动调整其大小以容纳更多的元素。以下是一个使用 Vector 添加和访问元素的例子:

List<String> list = new Vector<>();
list.add("apple");
list.add("banana");System.out.println("List size: " + list.size());
System.out.println("Element at index 0: " + list.get(0));
System.out.println("Element at index 1: " + list.get(1));

在上面的代码中,我们使用 Vector 来添加和访问元素。使用 add 方法添加元素,使用 get 方法访问元素,使用 size 方法获取列表的大小。

Set

Set 是一个无序的集合,不允许重复元素。在 Set 中,元素的顺序是不保证的。Java 中常用的 Set 接口实现类有 TreeSet、HashSet 和 LinkedHashSet。

HashSet

HashSet 是一个使用哈希表实现的无序集合,不允许重复元素。以下是一个使用 HashSet 添加和访问元素的例子:

Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");System.out.println("Set size: " + set.size());
System.out.println("Contains \"apple\": " + set.contains("apple"));
System.out.println("Contains \"orange\": " + set.contains("orange"));

在上面的代码中,我们使用 HashSet 来添加和访问元素。使用 add 方法添加元素,使用 contains 方法检查元素是否存在,使用 size 方法获取集合大小。

TreeSet

TreeSet 是一个基于红黑树实现的有序集合,不允许重复元素。以下是一个使用 TreeSet 添加和访问元素的例子:

Set<String> set = new TreeSet<>();
set.add("apple");
set.add("banana");System.out.println("Set size: " + set.size());
System.out.println("Contains \"apple\": " + set.contains("apple"));
System.out.println("Contains \"orange\": " + set.contains("orange"));

在上面的代码中,我们使用 TreeSet 来添加和访问元素。使用 add 方法添加元素,使用 contains 方法检查元素是否存在,使用 size 方法获取集合大小。

LinkedHashSet

LinkedHashSet 是一个基于哈希表和链表实现的有序集合,不允许重复元素。以下是一个使用 LinkedHashSet 添加和访问元素的例子:

Set<String> set = new LinkedHashSet<>();
set.add("apple");
set.add("banana");System.out.println("Set size: " + set.size());
System.out.println("Contains \"apple\": " + set.contains("apple"));
System.out.println("Contains \"orange\": " + set.contains("orange"));

在上面的代码中,我们使用 LinkedHashSet 来添加和访问元素。使用 add 方法添加元素,使用 contains 方法检查元素是否存在,使用 size 方法获取集合大小。

Map

Map 是一个键值对的集合,不允许重复键,但允许重复值。Map 中每个键都唯一对应一个值。Java 中常用的 Map 接口实现类有 TreeMap、HashMap 和 LinkedHashMap。

HashMap

HashMap 是一个使用哈希表实现的键值对集合,不允许重复键。以下是一个使用 HashMap 添加和访问元素的例子:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);System.out.println("Map size: " + map.size());
System.out.println("Value of key \"apple\": " + map.get("apple"));
System.out.println("Value of key \"orange\": " + map.get("orange"));

在上面的代码中,我们使用 HashMap 来添加和访问元素。使用 put 方法添加键值对,使用 get 方法访问键值对,使用 size 方法获取集合大小。

TreeMap

TreeMap 是一个基于红黑树实现的有序键值对集合,不允许重复键。以下是一个使用 TreeMap 添加和访问元素的例子:

Map<String, Integer> map = new TreeMap<>();
map.put("apple", 1);
map.put("banana", 2);System.out.println("Map size: " + map.size());
System.out.println("Value of key \"apple\": " + map.get("apple"));
System.out.println("Value of key \"orange\": " + map.get("orange"));

在上面的代码中,我们使用 TreeMap 来添加和访问元素。使用 put 方法添加键值对,使用 get 方法访问键值对,使用 size 方法获取集合大小。

LinkedHashMap

LinkedHashMap 是一个基于哈希表和链表实现的有序键值对集合,不允许重复键。以下是一个使用 LinkedHashMap 添加和访问元素的例子:

Map<String, Integer> map = new LinkedHashMap<>();
map.put("apple", 1);
map.put("banana", 2);System.out.println("Map size: " + map.size());
System.out.println("Value of key \"apple\": " + map.get("apple"));
System.out.println("Value of key \"orange\": " + map.get("orange"));

在上面的代码中,我们使用 LinkedHashMap 来添加和访问元素。使用 put 方法添加键值对,使用 get 方法访问键值对,使用 size 方法获取集合大小。

总结

Java 中的集合类可以分为 List、Set 和 Map 三个主要类别。在使用集合类时,请注意选择适当的实现类,并根据需要使用 List、Set 和 Map 接口。同时,还要注意集合类的动态性,以便在运行时动态调整其大小。

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

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

相关文章

前端常用UI框架

前言&#xff1a; 作为一个前端码农&#xff0c;不仅要熟练使用原生技术&#xff0c;现在更需要掌握的是技术框架和ui框架&#xff0c;因为框架可以帮助我们快速的开发项目&#xff0c;并且能够保证界面的兼容和美观&#xff0c;下面是一些常用的前端ui框架&#xff0c;供大家参…

Windows 2012 R2 编辑ini文本遇到的编码问题

在编辑服务端配置文件时&#xff0c;发现对于ini文本文件&#xff1a; 需注意点一&#xff1a;如果另存为UTF-8保存的实际上格式是UTF-8-BOM编码格式&#xff1b; 但是两种格式是存在差异的&#xff1a; 因此造成在使用C#调用系统DLL读取文件时并未报错&#xff0c;但是当使用…

ChatGPT是否能够进行对话历史的回顾和追踪?

ChatGPT是一种强大的预训练语言模型&#xff0c;具有丰富的语言理解和生成能力。在情感识别和情感生成方面&#xff0c;ChatGPT可以发挥重要作用。 1. **情感识别**&#xff1a; 情感识别是指通过对文本进行分析和理解&#xff0c;确定文本所表达的情感类别&#xff0c;如喜欢…

[德语学习]冠词、代词

定冠词 格阳性 m阴性 f中性 n复数 Pl.第一格 Nderdiedasdie第二格 G第三格 Ddemderdemden第四格 Adendiedasdie 不定冠词 格阳性 m阴性 f中性 n复数 Pl.第一格 Neineineein-第二格 G-第三格 Deinemeinereinem-第四格 Aeineneineein- 人称代词 单数 格我你他/她/它尊称第一…

MySQL 数据库约束

目录 一、数据库约束 1、约束类型 二、NULL 约束 三、unique 约束 四、default 约束 五、primary key 约束 自增主键 六、foreign key 外键约束 七、check 约束 一、数据库约束 我们使用数据库来存储数据&#xff0c;一般是希望这里存储的数据是靠谱的&#xff0c;…

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解

IOC 和 DI IOC 控制反转Bean的创建@Component的三个衍生注解Bean作用范围Bean创建时机Bean获取3中常见报错及解决方案DI 依赖注入@Autowired注解两个常见问题多个实现类---2种解决方案关于报错排查步骤管理第三方Bean@Bean 注解配置类优化Spring整合Mybatis整合思想整合实现持久…

【梦辛工作室】IF判断优化、责任链模式 IfChain

大家好哇&#xff0c;我是梦辛工作室的灵&#xff0c;在最近的开发中&#xff0c;有许多需要判断的分支处理&#xff0c;且处理内容较多且复杂&#xff0c;代码就容易越写越复杂&#xff0c;导致后期无法继续更新跌打&#xff0c;然后基于这个环境&#xff0c;我用责任链模式写…

Stable Diffusion在各种显卡上的加速方式测试,最高可以提速211.2%

Stable Diffusion是一种基于扩散模型的图像生成技术&#xff0c;能够从文本生成高质量的图像&#xff0c;适用于CG&#xff0c;插图和高分辨率壁纸等领域。 但是它计算过程复杂&#xff0c;使得它的生成速度较慢。所以研究人员就创造了各种提高其速度的方式&#xff0c;比如Xf…

计算机视觉(二)图像特征提取

文章目录 颜色特征量化颜色直方图适用颜色空间&#xff1a;RGB、HSV等颜色空间操作 几何特征边缘 Edge边缘定义边缘提取 基于关键点的特征描述子引入几何特征&#xff1a;关键点几何特征&#xff1a;Harris角点FAST角点检测几何特征&#xff1a;斑点局部特征&#xff1a;SIFT预…

JavaScript 事件监听

语法&#xff1a;元素对象.addEventListener("事件类型",要执行的函数) 事件监听三要素&#xff1a; 事件源&#xff1a;哪个dom元素被触发了&#xff0c;要获取dom元素事件类型&#xff1a;用什么方式触发&#xff0c;eg:鼠标单击click、鼠标经过mouseover登事件调…

基于WebSocket实现的后台服务

基于WebSocket实现的后台服务&#xff0c;用于接收客户端的心跳消息&#xff0c;并根据心跳消息来维护客户端连接。 具体实现中&#xff0c;服务启动后会创建一个HttpListener对象&#xff0c;用于监听客户端的WebSocket连接请求。当客户端连接成功后&#xff0c;服务会为每个…

Linux环境PostgreSQL安装

今日一语&#xff1a;鲲鹏扶摇而直上九万里&#xff0c;雄鹰展翅高飞&#xff0c;这是因为鲲鹏一出世就得历劫&#xff0c;老鹰刚长出翅膀就会被扔下悬崖 下载安装包&#xff0c;解压到服务器中&#xff0c;然后 make && make install # 登录使用 ./psql # 切换数据库…

maven 离线模式打包

遇到问题 由于客户对于安全性的要求比较高 又想要自己打包&#xff0c;但不允许使用外网&#xff0c;这样就出现了没办法在线打包&#xff0c;需要离线打包。其实也很简单&#xff0c;只需要三步。 第一步 将项目中用到的依赖&#xff0c;下载到本地仓库中&#xff0c;然后将…

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版&#xff0c;我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀&#xff08;宏定义&#xff09; #setTableSuffix("Controller")##保存文件&#xff08;宏定义&#xff…

qemu搭建arm环境以及文件共享

几乎完全参照该文章 使用QEMU搭建ARM64实验环境 - 简书 ubuntu 14.04&#xff0c;linux3.16&#xff0c; busybox-1.31.0 arm-linux-gnueabi-gcc -v linux3.16以及busybox下载安装可参考链接 Ubuntu14.04安装qemu&#xff0c;运行linux-3.16gdb调试_qemu 安装 ubuntu 14_这个我…

Kamailio常用命令

kamctl --help&#xff1a;显示kamctl命令的帮助信息。 kamctl ps&#xff1a;列出当前的Kamailio进程列表。 kamctl stats&#xff1a;显示Kamailio的统计信息。 kamctl uptime&#xff1a;显示Kamailio的运行时间。 kamctl moni&#xff1a;启动Kamailio的监控模式。 ka…

Django开发股票分析系统

下面是一个简单的示例代码&#xff0c;展示了如何使用Django来创建一个股票管理分析系统。 首先&#xff0c;在你的虚拟环境中安装Django&#xff1a; pip install Django 然后&#xff0c;创建一个新的Django项目&#xff1a; django-admin startproject stock_management 进入…

Centos MySql安装,手动安装保姆级教程

1.删除原有的mariadb&#xff0c;不然mysql装不进去 查询MAriaDB命令 rpm -qa|grep mariadb 删除 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 &#xff08;yum -y remove mysql 如需要清除服务器上以前安装过的MySQL可执行此命令&#xff0c;执行前一…

【数学建模】相关是一个距离指标吗?

一、说明 本文探讨最平凡的数学模型--距离模型。我们知道&#xff0c;任何数学模型如果是个距离模型&#xff0c;那么它是&#xff1a;放心的、自动的、不加任意条件的指标项目。然而另一些度量参数不是距离空间&#xff0c;因此&#xff0c;使用起来必须外加若干条件&#xff…

一款好用的思维导图软件drawio

最近需要画思维导图&#xff0c;结果发现既然被人用来收费了。所以记录一下&#xff0c;免得大家上当。 首先说明&#xff0c;这个东东在github上是免费开源的&#xff0c;收费的是一些不法分子搞得。下面是收费版本得界面。 开源地址&#xff1a; https://github.com/jgraph…