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]
相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi1 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号1 天前
java函数式编程--入门基础
java·编程·函数式编程