给 java 新手的超全 list 使用指南
前言
学 java 的人,几乎每天都要和 `list` 打交道。
它是最常用的数据结构之一,面试会问、工作会用、代码里到处都有它的身影。
别担心,这篇博客不会堆砌概念,而是用**大白话 + 大量代码**,带你把 list 真正搞懂。
什么是 list?
`list` 是一个**有序的集合**,你可以把它想象成一个**动态数组**。
- ✅ 可以放重复的元素
- ✅ 有索引(从 0 开始)
- ✅ 长度可以动态增长
在 java 中,最常用的实现类是 `arraylist`。
// 创建一个 list list<string> list = new arraylist<>();
注意啦:`list` 是接口,`arraylist` 是实现类。一般都用这种写法。
1. 添加元素
add() — 往里加
list<string> fruits = new arraylist<>();
fruits.add("苹果"); // 加到末尾
fruits.add("香蕉");
fruits.add("橙子");
system.out.println(fruits); // [苹果, 香蕉, 橙子]add(index, element) — 插队
fruits.add(1, "葡萄"); // 插入到索引 1 的位置 system.out.println(fruits); // [苹果, 葡萄, 香蕉, 橙子]
addall() — 批量添加
list<string> morefruits = arrays.aslist("西瓜", "哈密瓜");
fruits.addall(morefruits);
system.out.println(fruits); // [苹果, 葡萄, 香蕉, 橙子, 西瓜, 哈密瓜]2. 获取元素
get(index) — 取出来
string first = fruits.get(0); // 第一个 string second = fruits.get(1); // 第二个 system.out.println(first); // 苹果 system.out.println(second); // 葡萄
⚠️ **注意**:索引从 0 开始,别越界了!否则会抛 `indexoutofboundsexception`。
3. 修改元素
set(index, element) — 替换
fruits.set(0, "草莓"); // 把第一个改成草莓 system.out.println(fruits); // [草莓, 葡萄, 香蕉, 橙子, 西瓜, 哈密瓜]
4. 删除元素
remove(index) — 按索引删
fruits.remove(0); // 删除第一个 system.out.println(fruits); // [葡萄, 香蕉, 橙子, 西瓜, 哈密瓜]
remove(element) — 按内容删
fruits.remove("香蕉"); // 删除"香蕉"这个元素
system.out.println(fruits); // [葡萄, 橙子, 西瓜, 哈密瓜]clear() — 清空全部
fruits.clear(); // 全部删掉 system.out.println(fruits); // []
5. 查找元素
contains() — 查是否存在
boolean hasorange = fruits.contains("橙子");
system.out.println(hasorange); // trueindexof() — 查位置
int position = fruits.indexof("橙子");
system.out.println(position); // 1(找不到返回 -1)isempty() — 判空
boolean empty = fruits.isempty(); system.out.println(empty); // false(因为里面有东西)
6. 遍历 list
这是最常用的操作之一,必须掌握!
普通 for 循环
for (int i = 0; i < fruits.size(); i++) {
system.out.println(fruits.get(i));
}增强 for 循环(推荐新手用)
for (string fruit : fruits) {
system.out.println(fruit);
}iterator(面试常问!)
iterator<string> it = fruits.iterator();
while (it.hasnext()) {
string fruit = it.next();
system.out.println(fruit);
}foreach(java 8+)
fruits.foreach(fruit -> system.out.println(fruit));
方法引用(更简洁)
fruits.foreach(system.out::println);
7. 排序
collections.sort() — 简单排序
list<integer> numbers = new arraylist<>(); numbers.add(5); numbers.add(2); numbers.add(8); numbers.add(1); collections.sort(numbers); system.out.println(numbers); // [1, 2, 5, 8]
自定义排序(comparator)
list<string> names = new arraylist<>();
names.add("tom");
names.add("alice");
names.add("bob");
names.add("diana");
// 按长度排序
names.sort(comparator.comparingint(string::length));
system.out.println(names); // [tom, bob, alice, diana]8. 转换成数组
toarray()
string[] array = fruits.toarray(new string[0]);
for (string fruit : array) {
system.out.println(fruit);
}9. 数组转 list
arrays.aslist()
string[] colors = {"红", "蓝", "绿"};
list<string> colorlist = arrays.aslist(colors);
system.out.println(colorlist); // [红, 蓝, 绿]⚠️ 注意:这个方法返回的 list **不能增删**(是固定长度的)。如果需要可变的:
list<string> mutablelist = new arraylist<>(arrays.aslist(colors));
10. 常用技巧合集
判断两个 list 是否相等
list<string> a = arrays.aslist("1", "2", "3");
list<string> b = arrays.aslist("1", "2", "3");
system.out.println(a.equals(b)); // true复制 list
list<string> original = new arraylist<>(arrays.aslist("a", "b", "c"));
list<string> copy = new arraylist<>(original);替换所有元素(java 8+)
list<string> words = new arraylist<>(arrays.aslist("hello", "world"));
words.replaceall(s -> s.touppercase());
system.out.println(words); // [hello, world]过滤元素(java 8+ stream)
list<integer> nums = new arraylist<>(arrays.aslist(1, 2, 3, 4, 5, 6));
list<integer> even = nums.stream()
.filter(n -> n % 2 == 0)
.collect(collectors.tolist());
system.out.println(even); // [2, 4, 6]总结
| 操作 | 常用方法 |
|------|----------|
| 添加 | `add()`, `addall()` |
| 获取 | `get()` |
| 修改 | `set()` |
| 删除 | `remove()`, `clear()` |
| 查找 | `contains()`, `indexof()` |
| 遍历 | `for`, `foreach`, `iterator` |
| 排序 | `collections.sort()`, `list.sort()` |
`list` 是 java 开发中最基础也最重要的集合类,**一定要熟练掌握**。
建议:把上面的代码自己跑一遍,感受一下各个方法的效果。动手比看十遍都管用!
到此这篇关于java list一些常用方法的文章就介绍到这了,更多相关java list常用方法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论