【java】集合的基本使用

集合是 Java 中用来存储一组对象的容器。与数组相比,集合更加灵活和强大,支持动态增删元素、自动扩容、多种数据结构等特性。下面我会用通俗易懂的语言解释集合的基本使用。


1. 什么是集合?

  • 集合就像是一个“容器”,可以用来装很多对象(比如数字、字符串、自定义对象等)。

  • Java 提供了多种集合类型,比如 ListSetMap,每种集合有不同的特点和用途。


2. 常用的集合类型

2.1 List(列表)
  • 特点

    • 有序(元素有固定的顺序)。

    • 允许重复元素。

    • 可以通过索引访问元素。

  • 常用实现类

    • ArrayList:基于数组实现,查询快,增删慢。

    • LinkedList:基于链表实现,增删快,查询慢。

2.2 Set(集合)
  • 特点

    • 无序(元素没有固定顺序)。

    • 不允许重复元素。

  • 常用实现类

    • HashSet:基于哈希表实现,查询和增删都快。

    • TreeSet:基于红黑树实现,元素会自动排序。

2.3 Map(映射)
  • 特点

    • 存储键值对(key-value)。

    • 键不能重复,值可以重复。

  • 常用实现类

    • HashMap:基于哈希表实现,查询和增删都快。

    • TreeMap:基于红黑树实现,键会自动排序。


3. 集合的基本操作

3.1 创建集合
  • 使用 new 关键字创建集合对象。

  • 例如:

    java

    List<String> list = new ArrayList<>(); // 创建一个 ArrayList
    Set<Integer> set = new HashSet<>();   // 创建一个 HashSet
    Map<String, Integer> map = new HashMap<>(); // 创建一个 HashMap
3.2 添加元素
  • 使用 add() 方法向 List 或 Set 中添加元素。

  • 使用 put() 方法向 Map 中添加键值对。

  • 例如:

    java

    list.add("Apple"); // 向 List 中添加元素
    set.add(10);       // 向 Set 中添加元素
    map.put("Apple", 10); // 向 Map 中添加键值对
3.3 获取元素
  • 使用 get() 方法从 List 或 Map 中获取元素。

  • 例如:

    java

    String fruit = list.get(0); // 获取 List 中第一个元素
    int price = map.get("Apple"); // 获取 Map 中键为 "Apple" 的值
3.4 删除元素
  • 使用 remove() 方法从集合中删除元素。

  • 例如:

    java

    list.remove("Apple"); // 从 List 中删除元素
    set.remove(10);       // 从 Set 中删除元素
    map.remove("Apple");  // 从 Map 中删除键值对
3.5 遍历集合
  • 使用增强型 for 循环遍历集合。

  • 例如:

    java

    for (String item : list) {System.out.println(item); // 遍历 List
    }for (Integer num : set) {System.out.println(num); // 遍历 Set
    }for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue()); // 遍历 Map
    }

4. 集合的常用方法

方法名作用示例
add()添加元素list.add("Apple");
remove()删除元素list.remove("Apple");
get()获取元素list.get(0);
size()获取集合大小list.size();
contains()检查是否包含元素list.contains("Apple");
clear()清空集合list.clear();
isEmpty()检查集合是否为空list.isEmpty();
keySet()获取 Map 的所有键map.keySet();
values()获取 Map 的所有值map.values();
entrySet()获取 Map 的所有键值对map.entrySet();

5. 示例代码

以下是一个完整的示例,演示集合的基本使用:

java

import java.util.*;public class CollectionExample {public static void main(String[] args) {// List 示例List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Orange");System.out.println("List: " + list);// Set 示例Set<Integer> set = new HashSet<>();set.add(10);set.add(20);set.add(30);System.out.println("Set: " + set);// Map 示例Map<String, Integer> map = new HashMap<>();map.put("Apple", 10);map.put("Banana", 20);map.put("Orange", 30);System.out.println("Map: " + map);// 遍历 ListSystem.out.println("遍历 List:");for (String item : list) {System.out.println(item);}// 遍历 MapSystem.out.println("遍历 Map:");for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}}
}

6. 总结

  • 集合是 Java 中用来存储一组对象的容器,比数组更灵活。

  • 常用的集合类型有 ListSet 和 Map,每种集合有不同的特点。

  • 集合支持动态增删元素、自动扩容、多种数据结构等特性。

  • 掌握集合的基本操作(如添加、删除、遍历)是 Java 编程的基础。

 

对比

特性ListSetMap
有序性有序无序无序(键值对)
允许重复元素允许不允许键不允许重复,值允许
索引访问支持不支持不支持
适用场景需要有序和重复元素的场景需要去重的场景需要键值对映射的场景

 

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

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

相关文章

WPF-实现按钮的动态变化

MVVM 模式基础 视图模型&#xff08;ViewModel&#xff09;&#xff1a;MainViewModel类作为视图模型&#xff0c;封装了与视图相关的属性和命令。它实现了INotifyPropertyChanged接口&#xff0c;当属性值发生改变时&#xff0c;通过OnPropertyChanged方法通知视图进行更新&am…

主流NoSQL数据库类型及选型分析

在数据库领域&#xff0c;不同类型的数据库针对不同场景设计&#xff0c;以下是四类主流NoSQL数据库的对比分析&#xff1a; 一、核心特性对比 键值数据库&#xff08;Key-Value&#xff09; 数据模型&#xff1a;简单键值对存储 特点&#xff1a;毫秒级读写、高并发、无固定…

西门子PLC

西门子PLC与C#通信全解析&#xff1a;从协议选型到实战开发 一、西门子PLC通信协议概述 西门子PLC支持多种通信协议&#xff0c;需根据设备型号及项目需求选择&#xff1a; S7协议 西门子私有协议&#xff0c;适用于S7-200/300/400/1200/1500系列PLC特点&#xff1a;直接访问…

Visual Studio(VS)的 Release 配置中生成程序数据库(PDB)文件

最近工作中的一个测试工具在测试多台设备上使用过程中闪退&#xff0c;存了dump&#xff0c;但因为是release版本&#xff0c;没有pdb&#xff0c;无法根据dump定位代码哪块出了问题&#xff0c;很苦恼&#xff0c;查了下怎么加pdb生成&#xff0c;记录一下。以下是具体的设置步…

★ Linux ★ 进程(上)

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起学习 linux 进程~ ​❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 Linux专栏&#xff1a;https://blog.csdn.net/2302_80328146/category_12815302…

JAVA并发-volatile底层原理

volatile相当于是一个轻量级的synchronized&#xff0c;一般作用在变量上&#xff0c;它具有三个特性&#xff1a;可见性、有序性&#xff0c;相比于synchronized&#xff0c;他的执行成本更低。 先来说可见性&#xff0c;java存在共享变量不可见性的原因就是&#xff0c;线程…

Java面试第十一山!《SpringCloud框架》

大家好&#xff0c;我是陈一。如果文章对你有帮助&#xff0c;请留下一个宝贵的三连哦&#xff5e; 万分感谢&#xff01; 目录 一、Spring Cloud 是什么​ 二、Spring Cloud 核心组件​ 1. 服务发现 - Eureka​ 2. ​负载均衡 - Ribbon​ 3. 断路器 - Hystrix​ ​​4. …

Transaction rolled back because it has been marked as rollback-only问题解决

transaction rolled back because it has been marked as rollback-only 简略总结> 发生场景&#xff1a;try-catch多业务场景 发生原因&#xff1a;业务嵌套&#xff0c;事务管理混乱&#xff0c;外层业务与内层业务抛出异常节点与回滚节点不一致。 解决方式&#xff1a;修…

sql server数据迁移,springboot搭建开发环境遇到的问题及解决方案

最近搭建springboot项目开发环境&#xff0c;数据库连的是sql server&#xff0c;遇到许多问题在此记录一下。 1、sql server安装教程 参考&#xff1a;https://www.bilibili.com/opus/944736210624970769 2、sql server导出、导入数据库 参考&#xff1a;https://blog.csd…

【数学建模】灰色关联分析模型详解与应用

灰色关联分析模型详解与应用 文章目录 灰色关联分析模型详解与应用引言灰色系统理论简介灰色关联分析基本原理灰色关联分析计算步骤1. 确定分析序列2. 数据无量纲化处理3. 计算关联系数4. 计算关联度 灰色关联分析应用实例实例&#xff1a;某企业生产效率影响因素分析 灰色关联…

Spring配置文件-Bean实例化三种方式

无参构造方法实例化 工厂静态方法实例化 工厂实例方法实例化

SSL 和 TLS 认证

SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;认证是一种用于加密网络通信和验证服务器身份的安全技术。它是TLS&#xff08;Transport Layer Security&#xff0c;传输层安全协议&#xff09;的前身&#xff0c;虽然现在大多数应用使用的是TLS&…

SpringBoot学习(三)SpringBoot整合JSP以及Themeleaf

目录 Spring Boot 整合 JSP1. 配置依赖2. 创建WEB目录结构&#xff0c;配置JSP解析路径3. 创建Controller类4. 修改application.yml5. 添加jstl标签库的依赖6. JSP页面7. 创建启动类 Spring Boot 整合 Thymeleaf1. 添加Thymeleaf依赖2. Controller3. 修改application.yml配置&a…

普通鼠标的500连击的工具来了!!!

今天介绍的这款软件叫&#xff1a;鼠标录制器&#xff0c;是一款大小只有54K的鼠标连点器&#xff0c;软件是绿色单文件版。抢票&#xff0c;拍牌&#xff0c;摇号都能用上。文末有分享链接 在使用先我们先设置快捷键&#xff0c;这样我们在录制和停止录制的时候会更方便。 软件…

【MySQL】基本查询(表的增删查改+聚合函数)

目录 一、Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 二、Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 比较运算符2.2.2 逻辑运算符2.2.3 案…

JAVA中关于图形化界面的学习(GUI)动作监听,鼠标监听,键盘监听

动作监听&#xff1a; 先创建一个图形化界面&#xff0c;接着创建一个按钮对象&#xff0c;设置按钮的大小。 添加一个addActionListener()&#xff1b; addActionListener() 方法定义在 java.awt.event.ActionListener 接口相关的上下文中&#xff0c;许多支持用户交互产生…

MySQL 基础学习文档

一、MySQL 概述 1.1 核心概念 数据库 (DB)&#xff1a;存储数据的结构化仓库数据库管理系统 (DBMS)&#xff1a;操作数据库的软件&#xff08;如 MySQL、Oracle&#xff09;SQL&#xff1a;操作关系型数据库的标准语言 1.2 安装与配置 下载地址&#xff1a;MySQL Installer…

火山引擎(豆包大模型)(抖音平台)之火山方舟的Prompt的使用测试

前言 在大模型的使用过程当中&#xff0c;Prompt的使用非常的关键。原来&#xff0c;我对Prompt的理解不深&#xff0c;觉得Prompt的产生并不是很有必要。但是&#xff0c;自从使用了火山方舟中的“Prompt优解”之后&#xff0c;感受加深了&#xff0c;觉得Prompt是我们和大模型…

SpringBoot入门-(2) Spring IOC机制【附实例代码】

SpringBoot入门-(2) Spring IOC机制 Spring Spring是一个当前主流的轻量级的框架&#xff0c;发展到形状已经不仅仅是一个框架&#xff0c;而是形成以Spring为基础的生态圈&#xff0c;如(Spring Boot,Spring Cloud,Spring Security等) Spring 两大核心技术 控制反转(IoC)面…

备赛蓝桥杯之第十六届模拟赛3期职业院校组

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…