目标:掌握日常工作中常用集合的基本操作。
理论知识:
- List:
ArrayList
和LinkedList
的区别。
特性 | ArrayList | LinkedList |
底层实现 | 基于动态数组实现,元素安索引存储 | 基于双向链表实现,元素节点彼此连接 |
访问速度 | 随机访问效率高(O(1)) | 随机访问效率低(O(n)) |
插入和删除 | 插入和删除元素时需要移动大量元素,效率较低 | 插入和删除元素时无需移动元素,效率较高 |
内存消耗 | 占有内存较少,仅存储数据 | 占用内存较多,需要额外存储前后指针 |
适用场景 | 读操作多、增删操作少 | 频繁插入、删除操作 |
- 常用方法:
add
、remove
、get
、set
、contains
。
import java.util.ArrayList;public class ArrayListDemo {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();// 添加元素list.add("Apple");list.add("Banana");list.add("Cherry");// 循环遍历System.out.println("For Loop:");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("Enhanced For Loop:");for (String item : list) {System.out.println(item);}System.out.println("Lambda Expression:");list.forEach(System.out::println);System.out.println("Iterator:");list.iterator().forEachRemaining(System.out::println);}
}
import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();// 添加元素list.add("Dog");list.add("Cat");list.add("Rabbit");// 循环遍历System.out.println("For Loop:");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("Enhanced For Loop:");for (String item : list) {System.out.println(item);}System.out.println("Lambda Expression:");list.forEach(System.out::println);System.out.println("Iterator:");list.iterator().forEachRemaining(System.out::println);}
}
- Map:
HashMap
的基本操作。
import java.util.HashMap;
import java.util.Map;public class HashMapDemo {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();// 添加键值对map.put("Apple", 1);map.put("Banana", 2);map.put("Cherry", 3);// 循环遍历System.out.println("Using entrySet:");for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());}System.out.println("Using keySet:");for (String key : map.keySet()) {System.out.println("Key: " + key + ", Value: " + map.get(key));}System.out.println("Using forEach with Lambda:");map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value));System.out.println("Iterator using entrySet:");map.entrySet().iterator().forEachRemaining(entry -> System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()));}
}
- 键值对的迭代方法(
entrySet
和keySet
)。entrySet
:更高效,直接遍历键值对,适合同时操作键和值。keySet
:先遍历键,再通过键取值,效率稍低。forEach
+ Lambda:简洁高效,推荐在Java 8及以上使用。
总结
今天复习了 Java 中常用集合的基本操作,包括 List
和 Map
的使用,重点关注了工作中的实际应用场景。
-
List
- 了解了
ArrayList
和LinkedList
的区别:ArrayList
适合随机访问,LinkedList
适合频繁插入和删除。 - 掌握了常用方法:
add
、remove
、get
、set
、contains
。 - 学会了多种循环遍历方式:
for
循环、增强for
循环、Lambda
表达式、Iterator
。
- 了解了
-
Map
- 熟悉了
HashMap
的基本操作:put
、get
、remove
、containsKey
、containsValue
。 - 掌握了键值对的迭代方式:
entrySet
、keySet
、forEach
。 - 了解了不同迭代方式的效率与适用场景。
- 熟悉了