Java 集合框架详解:Collection 与 List 核心用法

文章目录

  • [一、Java 集合框架体系结构](#一、Java 集合框架体系结构)
  • [二、Collection 集合体系的基本特点](#二、Collection 集合体系的基本特点)
  • [三、Collection 接口中的常用方法](#三、Collection 接口中的常用方法)
  • [四、List 接口中的常用方法](#四、List 接口中的常用方法)

一、Java 集合框架体系结构

Java 集合框架主要可以分为 单列集合 和 双列集合 两大体系:

  • 单列集合: List、Set、Queue 等接口的实现类,如 ArrayList、LinkedList、HashSet、TreeSet 等。
  • 双列集合: Map 接口的实现类,如 HashMap、TreeMap 等。

二、Collection 集合体系的基本特点

1.有的集合允许元素重复,有的不允许

List:允许重复

java 复制代码
List<String> list = new ArrayList<>();

list.add("Java");
list.add("Java");
list.add("MySQL");

System.out.println(list);
// [Java, Java, MySQL]

Set:不允许重复

java 复制代码
Set<String> set = new HashSet<>();

set.add("Java");
set.add("Java");
set.add("MySQL");

System.out.println(set);
// Java 只会保留一个

2. 有的集合有序,有的集合无序

这里的"有序"通常指元素的存取顺序是否一致。

ArrayList:有序

java 复制代码
List<String> list = new ArrayList<>();

list.add("A");
list.add("B");
list.add("C");

System.out.println(list);
// [A, B, C]

按照 A → B → C 的顺序存入,遍历时也是这个顺序。

HashSet:不保证顺序

java 复制代码
Set<String> set = new HashSet<>();

set.add("A");
set.add("B");
set.add("C");

System.out.println(set);

HashSet 不保证遍历顺序与添加顺序一致。

三、Collection 接口中的常用方法

方法 说明
boolean add(E e) 添加元素
boolean addAll(Collection<? extends E> c) 添加另一个集合中的所有元素
boolean remove(Object o) 删除指定元素
boolean removeAll(Collection<?> c) 删除当前集合中所有属于指定集合的元素
void clear() 清空集合
boolean contains(Object o) 判断是否包含指定元素
boolean containsAll(Collection<?> c) 判断是否包含指定集合中的所有元素
int size() 获取元素个数
boolean isEmpty() 判断集合是否为空
Iterator<E> iterator() 获取迭代器,用于遍历集合

示例:

java 复制代码
Collection<String> collection = new ArrayList<>();

collection.add("Java");
collection.add("MySQL");`在这里插入代码片`
collection.add("Redis");

System.out.println(collection.size());          // 3
System.out.println(collection.contains("Java")); // true

collection.remove("MySQL");

System.out.println(collection); // [Java, Redis]

四、List 接口中的常用方法

List 继承自 Collection,因此拥有 Collection 中的全部方法。

除此之外,由于 List 中的元素具有明确的位置顺序,可以通过下标操作元素,因此提供了一些与索引相关的方法。

方法 说明
void add(int index, E element) 在指定位置插入元素
boolean addAll(int index, Collection<? extends E> c) 从指定位置开始插入一个集合
E get(int index) 获取指定下标的元素
E set(int index, E element) 修改指定下标的元素,并返回原元素
E remove(int index) 删除指定下标的元素,并返回被删除元素
int indexOf(Object o) 获取元素第一次出现的下标
int lastIndexOf(Object o) 获取元素最后一次出现的下标
ListIterator<E> listIterator() 获取 List 专用迭代器
List<E> subList(int fromIndex, int toIndex) 获取指定范围的子列表
void sort(Comparator<? super E> c) 按指定规则排序

示例:

java 复制代码
List<String> list = new ArrayList<>();

list.add("Java");
list.add("MySQL");
list.add("Redis");

// 指定位置插入
list.add(1, "Spring");

System.out.println(list);
// [Java, Spring, MySQL, Redis]

// 获取元素
System.out.println(list.get(1)); // Spring

// 修改元素
list.set(1, "Spring Boot");

// 删除指定位置的元素
list.remove(2);

System.out.println(list);
// [Java, Spring Boot, Redis]
相关推荐
天河归来9 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL9 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
砚底藏山河11 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
猿究院_夏燊11 小时前
MySQL 的四种隔离级别
java·数据库·mysql
码流子12 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
霸道流氓气质12 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
云创智城-yuncitys12 小时前
YunParking 4.0:JDK 17 与 Spring Boot 3.2 的停车云升级
java·开发语言·spring boot
文丑颜不良啊12 小时前
LeetCode1661~1680题目解析
java·leetcode
子非鱼@Itfuture12 小时前
关于前后端联调中登录状态/登录信息失效?
java·前端
郭小李12 小时前
openFeign入门
java·开发语言·前端