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]
相关推荐
张小姐的猫34 分钟前
【C++开发脚手架】 —— Jsoncpp上手
java·linux·开发语言·网络·c++·tcp/ip·udp
一晌小贪欢34 分钟前
python-第20天:关键字参数与不定长参数
java·开发语言·前端·python·数据可视化·函数参数·python办公
南大白1 小时前
IDEA Maven+JDK 全局配置 日志记录
java·maven·intellij-idea
程序员贺加贝1 小时前
报表大-IN-优化-一条-product_profile-超大-IN-SQL-背后的报表任务治理
java·spring boot·sql·性能优化·架构
霸道流氓气质1 小时前
Spring AI多模型路由与动态切换
java·后端·spring
艺杯羹1 小时前
全栈信创落地实录:基于银河麒麟V10与达梦数据库DM8的SpringBoot工业级适配指南
java·数据库·spring boot·后端·spring
鲨鱼辣钊5 小时前
【FastAPI筑基-Day19】APScheduler定时任务全实战|自动执行、动态启停、后台常驻
java·spring·fastapi
学长毕业设计9 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端