java集合类常用的方法介绍

        在 Java 中,集合(Collections)是用于存储多个元素的容器。Java Collections Framework 提供了丰富的集合类,用于满足不同的数据存储需求。以下是一些常用的 Java 集合类及其常用方法,以及简单的例子来说明它们的用法。


        List 接口
        List 接口代表一个有序的元素集合,元素可以重复,并且允许元素为 `null`。
        1. **`ArrayList`**
   - `add(E e)`: 添加元素。
   - `remove(Object o)`: 移除元素。
   - `get(int index)`: 获取指定索引的元素。
   - `size()`: 获取集合大小。


   ArrayList<String> myList = new ArrayList<>();
   myList.add("Apple");
   myList.add("Banana");
   String secondElement = myList.get(1); // 获取索引为 1 的元素
   myList.remove("Banana"); // 移除元素 "Banana"


        2. **`LinkedList`**
   - `addFirst(E e)`: 在列表开头添加元素。
   - `addLast(E e)`: 在列表末尾添加元素。
   - `removeFirst()`: 移除列表开头的元素。
   - `removeLast()`: 移除列表末尾的元素。


   LinkedList<String> myList = new LinkedList<>();
   myList.addFirst("Apple");
   myList.addLast("Banana");
   String firstElement = myList.removeFirst(); // 移除并获取列表开头的元素
   


        Set 接口
        Set 接口代表一个无序的元素集合,元素不能重复。
1. **`HashSet`**
   - `add(E e)`: 添加元素。
   - `remove(Object o)`: 移除元素。
   - `contains(Object o)`: 检查集合中是否包含指定元素。
   - `size()`: 获取集合大小。


   HashSet<String> mySet = new HashSet<>();
   mySet.add("Apple");
   mySet.add("Banana");
   boolean contains = mySet.contains("Banana"); // 检查集合中是否包含 "Banana"


2. **`TreeSet`**
   - `add(E e)`: 添加元素。
   - `remove(Object o)`: 移除元素。
   - `contains(Object o)`: 检查集合中是否包含指定元素。
   - `size()`: 获取集合大小。
   - `first()`: 获取集合中的第一个元素。
   - `last()`: 获取集合中的最后一个元素。


   TreeSet<String> mySet = new TreeSet<>();
   mySet.add("Apple");
   mySet.add("Banana");
   String firstElement = mySet.first(); // 获取集合中的第一个元素
  


        Map 接口
        Map 接口代表键值对的映射表,键不能重复。
1. **`HashMap`**
   - `put(K key, V value)`: 添加键值对。
   - `get(Object key)`: 获取指定键的值。
   - `remove(Object key)`: 移除指定键的键值对。
   - `size()`: 获取映射的大小。
   - `isEmpty()`: 检查映射是否为空。
           

   HashMap<String, String> myMap = new HashMap<>();
   myMap.put("Key", "Value");
   String value = myMap.get("Key"); // 获取键 "Key" 对应的值
   myMap.remove("Key"); // 移除键 "Key"


        
2. **`TreeMap`**
   - `put(K key, V value)`: 添加键值对。
   - `get(Object key)`: 获取指定键的值。
   - `remove(Object key)`: 移除指定键的键值对。
   - `size()`: 获取映射的大小。
   - `isEmpty()`: 检查映射是否为空。
   - `firstKey()`: 获取映射中的第一个键。
   - `lastKey()`: 获取映射中的最后一个键。
  

   TreeMap<String, String> myMap = new TreeMap<>();
   myMap.put("Key", "Value");
   String value = myMap.get("Key"); // 获取键 "Key" 对应的值
   myMap.remove("Key"); // 移除键 "Key"



        Queue 接口
Queue 接口代表一个先进先出(FIFO)的元素队列。
1. **`PriorityQueue`**
   - `add(E e)`: 添加元素。
   - `remove()`: 移除队列头部元素。
   - `peek()`: 获取队列头部元素,但不移除。
   - `size()`: 获取队列大小。


   PriorityQueue<String> myQueue = new PriorityQueue<>();
   myQueue.add("Apple");
   myQueue.add("Banana");
   String head = myQueue.peek(); // 获取队列头部元素,但不移除
         


2. **`LinkedList`**
   - `addFirst(E e)`: 在队列开头添加元素。
   - `addLast(E e)`: 在队列末尾添加元素。
   - `removeFirst()`: 移除队列开头的元素。
   - `removeLast()`: 移除队列末尾的元素。
        

   LinkedList<String> myQueue = new LinkedList<>();
   myQueue.addFirst("Apple");
   myQueue.addLast("Banana");
   String firstElement = myQueue.removeFirst(); // 移除并获取队列开头的元素
     

   
        迭代器(Iterators)
        所有集合类都提供迭代器,用于遍历集合中的元素。
        

List<String> myList = Arrays.asList("Apple", "Banana", "Cherry");
Iterator<String> iterator = myList.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}


        
        增强型集合类
Java 8 引入了增强型集合类,包括 `List`, `Set`, 和 `Map`。
1. **`List`**
   - `stream()`: 创建列表的流。
   - `forEach(Consumer<? super E> action)`: 遍历列表中的每个元素。
   - `removeIf(Predicate<? super E> filter)`: 移除满足给定谓词的元素。
          

   List<String> myList = Arrays.asList("Apple", "Banana", "Cherry");
   myList.removeIf(s -> s.startsWith("A")); // 移除所有以 "A" 开头的元素
      

    
2. **`Set`**
   - `stream()`: 创建集合的流。
   - `forEach(Consumer<? super E> action)`: 遍历集合中的每个元素。
   - `removeIf(Predicate<? super E> filter)`: 移除满足给定谓词的元素。


   Set<String> mySet = new HashSet<>();
   mySet.add("Apple");
   mySet.add("Banana");
   mySet.removeIf(s -> s.length() > 5); // 移除所有长度大于 5 的字符串
        


3. **`Map`**
   - `entrySet().stream()`: 创建映射项的流。
   - `forEach(BiConsumer<? super K, ? super V> action)`: 遍历映射中的每个映射项。
   - `removeIf(BiPredicate<? super K, ? super V> filter)`: 移除满足给定谓词的映射项。
           

   Map<String, String> myMap = new HashMap<>();
   myMap.put("Key1", "Value1");
   myMap.put("Key2", "Value2");
   myMap.entrySet().stream().filter(entry -> entry.getValue().startsWith("V")).forEach(entry ->         myMap.remove(entry.getKey())); // 移除所有值以 "V" 开头的映射项
   


        总结
        Java 集合类是 Java 编程中不可或缺的部分,它们提供了丰富的方法和功能,以满足不同类型的数据存储和操作需求。通过学习这些集合类及其常用方法,你可以更有效地处理数据,并提高代码的效率和可读性。
        

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

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

相关文章

AI 对齐是未来十年最重要的科学和社会技术工程 | 新程序员

【导读】人工智能与机器学习技术犹如疾风骤雨般席卷全球&#xff0c;在颠覆传统的同时为人类带来了新一轮的伦理挑战。AI 模型虽能凭借强大的数据处理能力和优化效率在各个行业大放异彩&#xff0c;然而在追求极致准确性的模型行为背后&#xff0c;却存在与其设计初衷产生偏差的…

2024-03-10 c++

&#x1f338; MFC下拉框控件 | Combo Box eg 计算器 1。新建MFC项目&#xff08;基于对话框、静态库&#xff09; 2。添加控件&#xff0c;删除初始的3个多余控件 加3个edit control 加1个combo box&#xff0c;属性sort改为false&#xff0c;data为 ;-;;;% 加1个static text…

【数据结构】红黑树(C++实现)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.概念 2.性质 3.…

企业微信HOOK协议,新设备二次验证处理

提示设备强制二次验证问题已处理 HOOK&#xff1a;https://www.showdoc.com.cn/1663062930779972/7859611259700402密码&#xff1a;999999999

蓝桥杯练习系统(算法训练)ALGO-979 移动

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给定一个n长的数列&#xff0c;有m次操作&#xff0c;第i次操作表示将整个数列循环移动mi位&#xff0c;询问每次操作结束后…

前端解决跨域问题( 6种方法 )

本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 本专栏的风格是力求简洁…

【MATLAB源码-第160期】基于matlab的胡桃夹子优化算法(NOA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 胡桃夹子优化算法&#xff08;Nutcracker Optimization Algorithm, NOA&#xff09;是一个灵感来源于胡桃夹子的故事的元启发式优化算法。这个故事中&#xff0c;胡桃夹子是一个能够将坚果壳轻易地破开以获取内部果仁的工具。…

linux系统adb调试工具

adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用。通过adb可以在Eclipse中通过DDMS来调试Android程序&#xff0c;说白了就是调试工具。 adb的工作方式比较特殊&#xff0c;采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯&#xff0c;默认情况下adb会…

Rust接收命令行参数和新建文件读写和追加操作与IO

接收命令行参数 命令行程序是计算机程序最基础的存在形式&#xff0c;几乎所有的操作系统都支持命令行程序并将可视化程序的运行基于命令行机制。 命令行程序必须能够接收来自命令行环境的参数&#xff0c;这些参数往往在一条命令行的命令之后以空格符分隔。 在很多语言中&a…

145.乐理基础-增三和弦、减三和弦

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;144.根三五音、大三和弦、小三和弦 上一个内容里练习的答案&#xff1a; 增三和弦与减三和弦的结构 增三和弦例子&#xff1a; 下图红框里的乐谱是c、e、升g&#xff0c;这个和弦&#xff0c;c-e是大三度&#xff…

_note_06

1.说一说函数的按地址传递和按值传递&#xff0c;他们的区别是什么&#xff1f; 函数的参数传递方式可以分为按地址传递&#xff08;也称为按引用传递&#xff09;和按值传递两种方式。按值传递是指将实际参数的值复制给形式参数&#xff0c;即在函数调用时&#xff0c;实际参数…

Ps:画笔工具

画笔工具 Brush Tool是 Photoshop 中最常用的工具&#xff0c;可广泛地用于绘画与修饰工作之中。 快捷键&#xff1a;B ◆ ◆ ◆ 常用操作方法与技巧 1、熟练掌握画笔工具的操作对于使用其他工具也非常有益&#xff0c;因为 Photoshop 中许多与笔刷相关的工具有类似的选项和操…

Nestjs与Vue实现多人聊天[简易版]

本项目是一个小demo,帮助各位理清一点开发思路&#xff0c;作为一个小参考&#xff0c;虽然技术栈是nodejs。但是其他语言也是相通的。 准备环境&#xff1a; Nodejs version >18.13.0Vue3Nestjssoket.io 一、初始化 打开一个路径启动cmd窗口&#xff0c;初始化前后端项…

智慧城市的前景:数字孪生技术在智慧城市中的应用前景

目录 一、引言 二、数字孪生技术及其在智慧城市中的应用概述 三、数字孪生技术在智慧城市中的应用前景 1、城市规划与仿真模拟 2、智能交通与出行服务 3、智慧环保与可持续发展 4、智慧公共服务与社会治理 5、智慧能源与绿色建筑 四、数字孪生技术在智慧城市中的挑战与…

CSS 入门指南(二)CSS 常用样式及注册页面案例

CSS 常用样式 颜色属性 常见样式的颜色属性&#xff1a; color&#xff1a;定义文本的颜色border-color&#xff1a;定义边框的颜色background-color&#xff1a;设置背景色 颜色属性值设置方式&#xff1a; 十六进制值 - 如&#xff1a;&#xff03;FF0000一个RGB值 - 如…

冬去春来天气阴晴不定 美食拿捏味蕾安稳换季

俗话说“春打六九头”&#xff0c;3月虽然已经入春&#xff0c;但是天气依然是凉飕飕的 &#xff0c;冬天春天的换季期&#xff0c;因为天气的变化&#xff0c;尤为痛苦。但是来到了换季期&#xff0c;天气也不总是那么稳定&#xff0c;随着气温的起伏&#xff0c;我们的食欲也…

Orange3数据预处理(预处理器组件)

1.组件介绍 Orange3 提供了一系列的数据预处理工具&#xff0c;这些工具可以帮助用户在数据分析之前准备好数据。以下是您请求的预处理组件的详细解释&#xff1a; Discretize Continuous Variables&#xff08;离散化连续变量&#xff09;&#xff1a; 这个组件将连续变量转…

Python调用edge-tts实现在线文字转语音

edge-tts是一个 Python 模块&#xff0c;允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。 项目源码 GitHub - rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an…

力扣hot---岛屿数量

dfs思路&#xff1a; 首先通过两层for循环遍历每一个点&#xff0c;如果这个点为0或者2&#xff08;这个2是什么呢&#xff1f;是在遍历该点以及该点连成的这一片区域中&#xff0c;因为通过深度优先搜索&#xff0c;遍历该点就等于遍历这一片区域&#xff0c;遍历这篇区域中的…