12.集合介绍以及数组的使用选择

集合基础

什么是集合

集合就是一种容器,用来装数据的,类似于数组

有数组为何还用集合?

数组定义完成并启动后,长度就固定了

集合大小可变,开发中用的更多

ArrayList 介绍

ArrayList 是 Java 集合框架中的一部分,基于动态数组实现,允许存储重复元素和 null 值。它实现了 List 接口,支持随机访问,但插入和删除操作在中间位置时效率较低,因为需要移动元素。ArrayList 会根据需要自动扩容,初始默认容量为 10。

创建 ArrayList

可以通过多种方式创建 ArrayList:

processing 复制代码
// 1. 无参构造,默认初始容量为 10
ArrayList<String> list1 = new ArrayList<>();

// 2. 指定初始容量
ArrayList<Integer> list2 = new ArrayList<>(20);

// 3. 通过其他集合初始化
List<String> tempList = Arrays.asList("A", "B");
ArrayList<String> list3 = new ArrayList<>(tempList);
 

增加元素

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

// 在末尾添加单个元素
list.add("Apple");
list.add("Banana");

// 在指定索引位置插入元素
list.add(1, "Orange");

// 添加整个集合
List<String> fruits = Arrays.asList("Mango", "Grapes");
list.addAll(fruits);

// 在指定位置添加整个集合
list.addAll(0, fruits);
 

删除元素

csharp 复制代码
ArrayList<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

// 删除指定索引位置的元素
list.remove(1); // 删除 "B"

// 删除第一个匹配的元素
list.remove("C");

// 删除所有匹配的元素
list.removeAll(Arrays.asList("A", "D"));

// 清空列表
list.clear();

// 条件删除(删除长度大于3的字符串)
list.removeIf(s -> s.length() > 3);
 

修改元素

dart 复制代码
ArrayList<String> list = new ArrayList<>(Arrays.asList("Red", "Green", "Blue"));

// 修改指定位置的元素
list.set(1, "Yellow"); // 将 "Green" 改为 "Yellow"
 

查询元素

gradle 复制代码
ArrayList<String> list = new ArrayList<>(Arrays.asList("Dog", "Cat", "Bird"));

// 获取指定位置的元素
String animal = list.get(1); // 返回 "Cat"

// 判断是否包含某个元素
boolean hasDog = list.contains("Dog"); // true

// 查找元素首次出现的位置
int index = list.indexOf("Bird"); // 返回 2

// 查找元素最后一次出现的位置(适用于有重复元素的情况)
int lastIndex = list.lastIndexOf("Cat");

// 获取列表大小
int size = list.size();

// 检查列表是否为空
boolean isEmpty = list.isEmpty();

// 遍历列表
for (String item : list) {
    System.out.println(item);
}

// 使用迭代器遍历
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}
 

元素个数

abnf 复制代码
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
int count = list.size(); // 返回2
 
相关推荐
码界筑梦坊几秒前
116-基于Flask的健身房会员锻炼数据可视化分析系统
python·信息可视化·数据分析·flask·毕业设计
wcy_10111 分钟前
QCoder智能生成Excel数据清洗与可视化代码
python·excel
yqcoder2 分钟前
JS 类型检测双雄:typeof vs instanceof 深度解析
开发语言·javascript·ecmascript
NEGl DRYN7 分钟前
Go基础之环境搭建
开发语言·后端·golang
蓝天居士8 分钟前
Linux网络驱动之Fixed-Link(29)
linux·运维·网络
AI木马人9 分钟前
20.人工智能实战:大模型项目如何从 Demo 走向生产?一套可落地的上线验收清单与工程治理方案
java·开发语言·人工智能
CandyU211 分钟前
Unity —— 反射
java·开发语言
初心未改HD12 分钟前
Go Modules:依赖管理的完全指南
开发语言·golang
楼田莉子12 分钟前
仿照Muduo的高并发服务器:EventLoop模块及与TimeWheel模块联调
java·开发语言
小雅痞15 分钟前
[Java][Leetcode middle] 3. 无重复字符的最长子串
java·开发语言·leetcode