JAVA集合:List、Set和Map

1、用法

List:存储一系列相关的元素。

Set:存储的元素具有唯一性,唯一性由hashCode和equals方法保证。

Map:存储的元素具有一一对应关系(k-v),通过k获取v。

案例示意:

有一个对象为:

java 复制代码
public class Student {
    String name ;//姓名
    int age ;//年龄
    int sex ;//性别
    int classId ;//班级
}

现在有大量的Student对象,我们需要暂时存储,就可以使用List

如果其中存在重复数据,我们可以使用Set,Set会自动去重

如果需要根据classId字段来进行分类,这时可以使用Map,对应关系为classId-List<Student>

2、使用场景

2.1 List

在JAVA中,List接口有三个常用实现类,分别是ArrayList、LinkedList和Vector。

  1. ArrayList最为常用,在没有特殊要求下,都可以使用。
  2. LinkedList用于存储对顺序有要求的数据,其内部为双向链表结构。
  3. Vector在多线程环境下使用,其内部用synchronized做线程安全,但功能与ArrayList无异。

2.2 Set

Set接口有两个常用实现类,分别是HashSet、LinkedHashSet和TreeSet。

  1. HashSet可以用于对数据的去重处理,其底层实现基于HashMap。所以判断是否为同一对象,依赖于hashcode和equals方法,要根据使用场景灵活重写。
  2. LinkedHashSet用于存储对顺序有要求的数据。
  3. TreeSet可以用于对集合内部数据的排序。

2.3 Map

Map接口有三个常用实现类,分别是HashMap、LinkedHashMap和TreeMap。

  1. HashMap和ArrayList一样,没有特殊要求就用它。
  2. LinkedHashMap存放对顺序有要求的数据。
  3. TreeMap可以对存放的数据进行排序。

3、注意事项

  1. 具体使用哪一个集合要根据使用场景来判断,不能随意使用。
  2. List、Set和Map都有各自长用的集合类,要注意区分使用细节。
  3. Set的遍历依赖于stream、增强for和迭代器。
  4. 以上的Map和Set都要注意对hashcode和equals方法的重写,这是立身根本。
相关推荐
就叫飞六吧6 小时前
子页面和dialog案例
开发语言·javascript·ecmascript
CoderYanger6 小时前
A.每日一题:3020. 子集中元素的最大数量
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
wear工程师7 小时前
CompletableFuture 的 allOf 到底怎么收结果?面试别只说并行
java·后端
倒流时光三十年7 小时前
Logback 系列(3):三大核心组件 Logger / Appender / Encoder
java·开发语言·logback
什巳7 小时前
JAVA练习312- 二叉搜索树中第 K 小的元素
java·数据结构·算法·leetcode
Darkwanderor8 小时前
动、静态库相关内容的详细介绍
linux·c语言·开发语言·c++
文祐8 小时前
C++类之虚函数表没有虚继承的菱形继承
开发语言·c++·算法
倒流时光三十年8 小时前
Logback 系列(7):常用 Appender(控制台 / 文件 / 滚动文件)
java·前端·logback
sycmancia8 小时前
Qt——另一种创建线程的方式
开发语言·qt
极客先躯8 小时前
高级java每日一道面试题-2026年04月18日-实战篇[Docker]-如何处理金融行业的时序数据容器化?
java·运维·docker·容器·金融·时序数据·高级面试