3.4. Java集合框架(List、Set、Map等)

news2024/11/24 7:41:39

Java集合框架是Java提供的一套用于存储和操作数据的接口和类。它包括以下几个主要部分:

  1. 接口:集合框架定义了一系列接口,如CollectionListSetMap等。
  2. 实现类:集合框架提供了一些实现这些接口的类,如ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap等。
  3. 算法:集合框架提供了一些用于操作集合的算法,如排序、搜索等。

我们将分别介绍这些接口和实现类,并给出相应的示例。

1. Collection接口

Collection接口是Java集合框架的根接口,它定义了一些用于操作集合的通用方法。Collection接口有两个主要的子接口:ListSet

以下是Collection接口的一些常用方法:

  • add(E e):添加一个元素。
  • addAll(Collection<? extends E> c):添加一个集合的所有元素。
  • remove(Object o):删除一个元素。
  • removeAll(Collection<?> c):删除一个集合的所有元素。
  • contains(Object o):判断是否包含一个元素。
  • containsAll(Collection<?> c):判断是否包含一个集合的所有元素。
  • size():返回集合的元素个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

2. List接口

List接口是一个有序的、可重复的集合。List接口的主要实现类有ArrayListLinkedList

以下是List接口的一些常用方法:

  • get(int index):获取指定位置的元素。
  • set(int index, E element):设置指定位置的元素。
  • add(int index, E element):在指定位置添加一个元素。
  • remove(int index):删除指定位置的元素。
  • indexOf(Object o):返回一个元素的第一个匹配位置。
  • lastIndexOf(Object o):返回一个元素的最后一个匹配位置。

3. Set接口

Set接口是一个无序的、不可重复的集合。Set接口的主要实现类有HashSetLinkedHashSet

以下是Set接口的一些常用方法(实际上与Collection接口的方法相同,因为Set接口没有添加新的方法):

  • add(E e):添加一个元素。
  • remove(Object o):删除一个元素。
  • contains(Object o):判断是否包含一个元素。
  • size():返回集合的元素个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

4. Map接口

Map接口是一个存储键值对的集合。Map接口的主要实现类有HashMapLinkedHashMap

以下是Map接口的一些常用方法:

  • put(K key, V value):添加一个键值对。
  • get(Object key):根据键获取值。
  • remove(Object key):根据键删除一个键值对。
  • containsKey(Object key):判断是否包含一个键。
  • containsValue(Object value):判断是否包含一个值。
  • size():返回集合的键值对个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

5. 示例

下面是一个使用Java集合框架的示例:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
import java.util.Map;

public class CollectionExample {
    public static void main(String[] args) {
        // List 示例
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add("Cherry");
        arrayList.add("Banana");
        System.out.println("ArrayList: " + arrayList);

        List<String> linkedList = new LinkedList<>();
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Cherry");
        linkedList.add("Banana");
        System.out.println("LinkedList: " + linkedList);

        // Set 示例
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Cherry");
        hashSet.add("Banana");
        System.out.println("HashSet: " + hashSet);

        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("Apple");
        linkedHashSet.add("Banana");
        linkedHashSet.add("Cherry");
        linkedHashSet.add("Banana");
        System.out.println("LinkedHashSet: " + linkedHashSet);

        // Map 示例
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Apple", 1);
        hashMap.put("Banana", 2);
        hashMap.put("Cherry", 3);
        hashMap.put("Banana", 4);
        System.out.println("HashMap: " + hashMap);

        Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("Apple", 1);
        linkedHashMap.put("Banana", 2);
        linkedHashMap.put("Cherry", 3);
        linkedHashMap.put("Banana", 4);
        System.out.println("LinkedHashMap: " + linkedHashMap);
    }
}

输出结果:

ArrayList: [Apple, Banana, Cherry, Banana]
LinkedList: [Apple, Banana, Cherry, Banana]
HashSet: [Apple, Banana, Cherry]
LinkedHashSet: [Apple, Banana, Cherry]
HashMap: {Apple=1, Banana=4, Cherry=3}
LinkedHashMap: {Apple=1, Banana=4, Cherry=3}

这个示例演示了如何使用ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap类。你可以看到,List接口允许添加重复元素,而Set接口不允许。此外,HashMapHashSet是无序的,而LinkedHashMapLinkedHashSet是有序的。

希望这个示例和解释能帮你更好地理解Java集合框架。如果你有任何疑问,请随时向我提问。

file

file

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

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

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

相关文章

【HISI IC萌新虚拟项目】cpu_if模块方案文档

该文档仅为参考,如果在进行本系列虚拟项目的学习与实践,请自行完成本部分内容。 由于文档格式在之前博客中已展现,因此本文只针对关键点写一下方案。 cpu_if模块概述 cpu_if模块主要是寄存器单元以及寄存器访问通路的处理,可以看下整体结构图: 因此我们可以概括cpu_if模…

看完这篇 教你玩转渗透测试靶机vulnhub—DarkHole

Vulnhub靶机DarkHole渗透测试详解 Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;逻辑漏洞&#xff1a;③&#xff1a;文件上传GetShell&#xff1a;④…

用可编程逻辑器件FPGA LCMXO2-4000HC-6MG132I 实现智能汽车解决方案设计

LCMXO2-4000HC-6MG132I lattice莱迪斯深力科 MachXO2 可编程逻辑器件 (PLD) 由六个超低功耗、即时启动、非易失性 PLD 组成&#xff0c;可提供 256 至 6864 个查找表 (LUT) 的密度。 MachXO2 系列 PLD 提供多种特性&#xff0c;例如嵌入式块 RAM (EBR)、分布式 RAM 和用户闪存 …

PhoneHelper

不一样的手机管理工具 一款基于 Golang 语言开发的手机管理软件——PhoneHelper。 PhoneHelper 是一款支持无线&#xff08;安卓11及以上支持扫码连接&#xff09;和有线的adb方式连接设备并且管理设备的软件&#xff0c;同时已适配 Windows、Linux、MacOS 平台&#xff0c;在不…

在Linux设备上让程序在任意目录都能执行

目录 0. 前言1. 编写代码2. 创建软链接3. 其他Linux文章 0. 前言 在Ubuntu上使用espidf中往往需要先设置环境变量&#xff0c;再执行export.sh&#xff0c;对环境装的乱七八糟的我造成了很大的不便我希望无论我在哪个目录&#xff0c;都能快速执行某个命令 我先是使用了编写b…

2023年高级系统架构设计师 如何备考?

高级架构有一定的难度&#xff0c;但是值得挑战一下 新版《系统架构设计师考试大纲》出版了&#xff01; 可以去官网看看 系统架构设计师是软考的高级科目之一&#xff0c;系统架构设计师一年只有一次考试机会&#xff0c;是在下半年11月份考试 考试科目分为&#xff1a;综合…

Spring5 学习笔记

前置知识&#xff1a; 掌握Java基础知识&#xff08;特别是反射&#xff09;掌握Java注解掌握XML掌握Maven Spring5学习笔记 1、Spring概述1.1、简介1.2、优点1.3、组成1.4、拓展 2、IOC理论推导2.1、分析实现2.2、IOC本质 3、HelloSpring3.1、导入jar包3.2、编写代码3.3、思考…

KUC720AE01 3BHB003431R0001 基于浏览器的简单配置

实时自动化是工业通信领域的最高权威&#xff0c;拥有广泛的网关&#xff0c;可将最多产的工业协议连接到您的MicroLogix、KUC720AE01 3BHB003431R0001、CompactLogix、PLC-5和SLC 5/05 PLC&#xff0c;因此用户可以获得一个简单易用的连接解决方案来集成他们的各种设备。像所有…

黄金期货CFD会亏损吗?有哪些黄金期货CFD常见问题

差价合约(Contract For Difference&#xff0c;CFD)是一种热门的衍生性金融商品&#xff0c;CFD 可以在不实际持有资产的情况下&#xff0c;透过保证金方式来针对股市指数、外汇、贵金属、原物料等商品进行多、空任一方向之交易。投资者在选择黄金交易时&#xff0c;会遇到哪些…

数据结构(二)—— 链表(2)

文章目录 1 143 重排链表1.1 找到原链表的中点&#xff08;「876. 链表的中间结点」&#xff09;。2.2 将原链表的右半端反转&#xff08;「206. 反转链表」&#xff09;3.3 交叉合并两个链表&#xff08;与「21. 合并两个有序链表」思路不同&#xff09;3.4 补充 21 合并两个有…

JavaScript高级一、作用域解构箭头函数

零、文章目录 JavaScript高级一、作用域&解构&箭头函数 1、作用域 &#xff08;1&#xff09;局部作用域 局部作用域分为函数作用域和块作用域。 **函数作用域&#xff1a;**在函数内部声明的变量所在作用域。 函数内部声明的变量&#xff0c;在函数外部无法被访问…

项目冲突3大管理原则及管理模式

1、系统思考原则 此原则即从全局出发&#xff0c;追求全局最优。系统思考原则的关键在于能够从全局出发&#xff0c;发现冲突的“杠杆点”&#xff0c;即可引起结构上重要而持久改善的点。一旦找到最佳的杠杆点&#xff0c;我们便能以小而专注的行动&#xff0c;创造最大的效果…

笔试强训4

作者&#xff1a;爱塔居 专栏&#xff1a;笔试强训 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起进步 目录 day4 day5 day4 1. 下列与队列结构有关联的是&#xff08;&#xff09; A 函数的递归调用 B 数组元素的引用 C 多重循环的执行D 先到先服务的作业调度 对列…

数据表示(二进制、进制转换、补码计算)

目录 1.进制2.进制转换2.1 R进制转十进制2.2 十进制转R进制2.3 m进制转n进制方法1&#xff1a;十进制中转方法2&#xff1a;直接转化 3.进制计算3.1 机器数3.2 编码方式&#xff08;原码、反码、补码、移码&#xff09;3.3 表示范围定点整数定点小数 3.4 定点表示法 4.浮点数4.…

小破站有许多“高质量”东西,怀揣着“学习”的目的,我用Python将它们通通采集下来

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 事情是这样的&#xff0c;昨晚室友拉着我去他的电脑&#xff0c;说带我欣赏一点高雅的作品~ 于是这一坐下&#xff0c;便是一晚上… 作为一个乐于分享的博主&#xff0c;本来我是决定直接分享的&#xff0c; 但是转念一想&a…

MySQL锁详解

五.锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源CPU、 RAM、I/O的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&#xff0c;锁冲…

「实在RPA·零售数字员工」助力零售运营化”零“为整

零售行业是指以面向消费者销售商品和服务的行业&#xff0c;它涵盖了各种类型的商店、百货公司、超市、购物中心、电商平台等&#xff0c;是全球最大的行业之一&#xff0c;在经济增长中有着举足轻重的作用。随着科技的发展&#xff0c;消费者需求的变化以及运营成本的增长&…

软件测试用例的设计以及分类

文章目录 测试用例设计1.测试用例2.设计测试用例的方法1) 等价类2) 边界值3) 判定表法4) 正交法5) 场景设计法6) 错误猜测法 3. 测试分类1) 按测试对象划分2) 按是否查看代码划分黑盒测试白盒测试灰盒测试为什么不直接使用灰盒测试常见的测试方法有哪些&#xff1f;哪些方法用的…

终于拿下腾讯25K的offer,面试官问我的面试题+回答,他都听懵了...

前言 自动化测试面试题总结&#xff1a; 1、你会封装自动化测试框架吗&#xff1f; 这个问得最多&#xff0c;很多公司直接写在招聘要求中。 自动化框架主要的核心框架就是分层PO模式&#xff1a;分别为&#xff1a;基础封装层BasePage&#xff0c;PO页面对象层&#xff0c;T…

【移动计算技术(Android)】期末复习

目录 选择题 选择题知识点汇总 Activity Intent Broadcast BroadcastReceiver 如何自定义Receiver 如何注册接收器 Service SharedPreferences 三种访问模式 如何创建 如何存储/修改 如何读取 内部存储 openFileOutput openFileInput SD卡 资源文件 SQLite…