Java?List一些常用方法完全攻略
給 Java 新手的超全 List 使用指南
前言
學(xué) Java 的人,幾乎每天都要和 `List` 打交道。
它是最常用的數(shù)據(jù)結(jié)構(gòu)之一,面試會問、工作會用、代碼里到處都有它的身影。
別擔(dān)心,這篇博客不會堆砌概念,而是用**大白話 + 大量代碼**,帶你把 List 真正搞懂。
什么是 List?
`List` 是一個**有序的集合**,你可以把它想象成一個**動態(tài)數(shù)組**。
- ? 可以放重復(fù)的元素
- ? 有索引(從 0 開始)
- ? 長度可以動態(tài)增長
在 Java 中,最常用的實現(xiàn)類是 `ArrayList`。
// 創(chuàng)建一個 List List<String> list = new ArrayList<>();
注意啦:`List` 是接口,`ArrayList` 是實現(xiàn)類。一般都用這種寫法。
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) — 按內(nèi)容刪
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 循環(huán)
for (int i = 0; i < fruits.size(); i++) {
System.out.println(fruits.get(i));
}增強 for 循環(huán)(推薦新手用)
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. 轉(zhuǎn)換成數(shù)組
toArray()
String[] array = fruits.toArray(new String[0]);
for (String fruit : array) {
System.out.println(fruit);
}9. 數(shù)組轉(zhuǎn) 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復(fù)制 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]總結(jié)
| 操作 | 常用方法 |
|------|----------|
| 添加 | `add()`, `addAll()` |
| 獲取 | `get()` |
| 修改 | `set()` |
| 刪除 | `remove()`, `clear()` |
| 查找 | `contains()`, `indexOf()` |
| 遍歷 | `for`, `forEach`, `Iterator` |
| 排序 | `Collections.sort()`, `list.sort()` |
`List` 是 Java 開發(fā)中最基礎(chǔ)也最重要的集合類,**一定要熟練掌握**。
建議:把上面的代碼自己跑一遍,感受一下各個方法的效果。動手比看十遍都管用!
到此這篇關(guān)于Java List一些常用方法的文章就介紹到這了,更多相關(guān)Java List常用方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解SpringBoot中使用JPA作為數(shù)據(jù)持久化框架
這篇文章主要介紹了SpringBoot中使用JPA作為數(shù)據(jù)持久化框架的相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
MyBatis后端對數(shù)據(jù)庫進行增刪改查等操作實例
Mybatis是appach下開源的一款持久層框架,通過xml與java文件的緊密配合,避免了JDBC所帶來的一系列問題,下面這篇文章主要給大家介紹了關(guān)于MyBatis后端對數(shù)據(jù)庫進行增刪改查等操作的相關(guān)資料,需要的朋友可以參考下2022-08-08
10k+點贊的 SpringBoot 后臺管理系統(tǒng)教程詳解
這篇文章主要介紹了10k+點贊的 SpringBoot 后臺管理系統(tǒng)教程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Java中Comparable接口和Comparator接口的使用比較
Java中提供了兩種對集合或數(shù)組中元素進行排序的方法,一種是實現(xiàn)Comparable接口,另一種是實現(xiàn)Comparator接口,下面這篇文章主要給大家介紹了關(guān)于Java中Comparable接口和Comparator接口使用的相關(guān)資料,需要的朋友可以參考下2024-06-06

