java集合类常用的方法介绍

news2024/11/18 5:45:23

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

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

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

相关文章

最佳牛围栏(二分 + 前缀和)

最佳牛围栏 原题链接&#xff1a;https://www.acwing.com/problem/content/104/ 题目 思路 我们发现若是枚举答案的话&#xff0c;那么我们判断是否存在一个平均值大于等于mid&#xff0c;如果最优解是x&#xff0c;那么mid < x的时候&#xff0c;必然可以找到一段&#x…

【文件增量备份系统】使用Mysql的流式查询优化数据清理性能(针对百万量级数据)

文章目录 功能介绍原始方案测试 流式处理测试 功能可用性测试 功能介绍 清理功能的作用是&#xff1a;扫描数据库中已经备份过的文件&#xff0c;查看数据源中是否还有相应的文件&#xff0c;如果没有&#xff0c;说明该文件被删除了&#xff0c;那相应的&#xff0c;也需要将…

buuctf EasyBypass --不会编程的崽

buu后边的题有些确实难&#xff0c;有些其实也没那么复杂。昨天做一道异或绕过的题&#xff0c;现在还没看懂QAQ 先来一题简单的吧。哎&#xff0c;随缘更新吧 <?phphighlight_file(__FILE__);$comm1 $_GET[comm1]; $comm2 $_GET[comm2];if(preg_match("/\|\|\\|\…

新规正式发布 | 百度深度参编《生成式人工智能服务安全基本要求》

2024年2月29日&#xff0c;全国网络安全标准化技术委员会&#xff08; TC260 &#xff09;正式发布《生成式人工智能服务安全基本要求》&#xff08;以下简称《基本要求》&#xff09;。《基本要求》规定了生成式人工智能服务在安全方面的基本要求&#xff0c;包括语料安全、模…

弱电综合布线:连接现代生活的纽带

在当今信息化快速发展的时代&#xff0c;弱电网络布线作为信息传输的重要基础设施&#xff0c;其作用日益凸显。它不仅保障了数据的高效流通&#xff0c;还确保了通信的稳定性。从商业大厦到教育机构&#xff0c;从政府机关到医院急救中心&#xff0c;再到我们居住的社区&#…

【开课】云贝教育2024年3月9日-PostgreSQL中级工程师PGCE认证培训开课啦!

课程介绍 根据学员建议和市场需求,规划和设计了《PostgreSQL CE 认证课程》,本课程以内部原理、实践实战为主&#xff0c;理论与实践相结合。课程包含PG 简介、安装使用、服务管理、体系结构等基础知识。同时结合一线实战案例&#xff0c; 面向 PG 数据库的日常维护管理、服务和…

如何远程访问电脑文件?

远程访问电脑文件是当今数字化时代中十分常见且实用的技术。它允许我们从任何地方的计算机或移动设备访问和操作我们的电脑中的文件。无论是远程工作、远程学习、远程协作还是方便地获得自己计算机上的重要文件&#xff0c;远程访问电脑文件都为我们提供了巨大的便利。 在远程访…

从 iPhone 15/15 Pro 恢复丢失数据的 3 种方法

毫无疑问&#xff0c; iPhone 15 是迄今为止最令人印象深刻的 iPhone 。另一方面&#xff0c;我们知道&#xff0c;设备上保存的数据无论多么可靠&#xff0c;在设备使用过程中都可能因各种原因而丢失。 由于这些设备的性质&#xff0c;您在使用 iPhone 15、iPhone 15 Pro 或 …

大语言模型系列-GPT-2

文章目录 前言一、GPT-2做的改进二、GPT-2的表现总结 前言 《Language Models are Unsupervised Multitask Learners&#xff0c;2019》 前文提到&#xff0c;GPT-1利用不同的模型结构微调初步解决了多任务学习的问题&#xff0c;但是仍然是预训练微调的形式&#xff0c;GPT-…

[密码学]Base64编码

一、相关指令 1. 查看工具版本号 base64 --version2. 对字符串加密 echo 字符串 | base64 echo "Hello base64" | base643. 对字符串解密 echo 字符串 |base64 -d echo "SGVsbG8gTGV0aWFuLVJTQQo" | base64 -d4. 对文件加密 base64 文件名 base64 tex…

【Vue 3】

v-model 作用&#xff1a;给表单元素使用&#xff0c;双向数据绑定---->可以快速获取或设置表单元素内容 是value属性和input事件的合写 数据变化--->视图自动更新试图变化--->数据自动更新 语法&#xff1a;v-model"变量" 数据变&#xff0c;视图跟着变…

【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 常用HTML标签(2)

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 超级链接标…

遗传算法优化BP神经网络时间序列回归分析,ga-bp回归分析

目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 遗传算法原理 遗传算法主要参数 遗传算法流程图 完整代码包含数据下载链接: 遗传算法优化BP神经网络时间序列回归分析,ga-bp回归分析(代码完…

实现的一个网页版的简易表白墙

实现的一个网页版的表白墙 实现效果 代码截图 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

Java面试(4)之 Spring Bean生命周期过程

一, 整个加载的完整链路图 更详细的生命周期函数链路图(仅供参考) 二, Bean实例化的四种方式: 1, 无参构造器(默认且常用)6 2, 静态工厂方法方式(factory-method指定实例化的静态方法) 3, 实例工厂方法方式(factory-bean指定bean的name,factory-method指定实例化方法) 4, 实…

(黑马出品_04)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_04&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术异步通信 今日目标1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比 2.快速入门2.1.安装RabbitMQ2.1.1.单机部署(1).下载镜像方式…

Spark实战-基于Spark日志清洗与数据统计以及Zeppelin使用

Saprk-日志实战 一、用户行为日志 1.概念 用户每次访问网站时所有的行为日志(访问、浏览、搜索、点击)用户行为轨迹&#xff0c;流量日志2.原因 分析日志&#xff1a;网站页面访问量网站的粘性推荐3.生产渠道 (1)Nginx(2)Ajax4.日志内容 日志数据内容&#xff1a;1.访问的…

2024_01蓝桥杯STEMA 考试 Scratch 中级试卷解析​​​​​​​

2024_01蓝桥杯STEMA 考试 Scratch 中级试卷解析一、选择题第一题、运行下列哪段程序后,蜜蜂会向上移动?(C ) 第二题、运行以下程序,输入下列哪个数后,角色会说“未通过”?( D) A. 90 B. 85 C. 60 D. 58第三题、运行以下程序后,n 的值为(B )。 A. 17 B…

机器学习 | 使用CatBoost处理缺失值

数据是任何分析或机器学习的基础。然而&#xff0c;现实世界的数据集并不完美&#xff0c;它们经常包含缺失值&#xff0c;这可能导致任何算法的训练阶段出现错误。处理缺失值至关重要&#xff0c;因为它们可能会导致数据分析和机器学习模型中出现偏差或不准确的结果。处理缺失…

第5章 HSA内存模型

5.1 引言 在共享内存环境中&#xff0c;独立的控制线程可以竞相修改单个位置。为程序以可预测的方式运行&#xff0c;程序员必须用同步来控制这些竞争。 “内存一致性模型”或“内存模型”定义了并行代理之间通信的基本规则。当这些规则含糊不清地定义或者更糟的是完全不存在…