Java集合框架:数据结构的Java实现
Java集合框架:数据结构的Java实现
概述
Java集合框架提供了一套完整的数据结构和算法实现,是Java编程中最重要的基础设施之一。它包括List、Set、Map等接口及其实现类。
1. List接口
import java.util.*;
// ArrayList:动态数组,随机访问快
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Python");
arrayList.add("C++");
System.out.println(arrayList.get(0)); // Java
// LinkedList:双向链表,插入删除快
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("First");
linkedList.addFirst("Before First");
linkedList.addLast("Last");
2. Set接口
// HashSet:无序,不允许重复
Set<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Apple"); // 不会添加
System.out.println(hashSet.size()); // 2
// TreeSet:有序,基于红黑树
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(3);
treeSet.add(1);
treeSet.add(2);
System.out.println(treeSet); // [1, 2, 3]
3. Map接口
// HashMap:最常用的Map实现
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Java", 1);
hashMap.put("Python", 2);
hashMap.put("C++", 3);
Integer value = hashMap.get("Java"); // 1
// TreeMap:按key排序
TreeMap<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Banana", 2);
treeMap.put("Apple", 1);
treeMap.put("Cherry", 3);
4. 集合遍历
List<String> list = Arrays.asList("Java", "Python", "C++");
// 方式1:for-each循环
for (String item : list) {
System.out.println(item);
}
// 方式2:Iterator
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// 方式3:Stream API
list.stream()
.filter(s -> s.length() > 2)
.forEach(System.out::println);
// Map遍历
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
// entrySet遍历
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
5. Collections工具类
import java.util.Collections;
List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6));
Collections.sort(list); // 排序
Collections.reverse(list); // 反转
Collections.shuffle(list); // 随机排序
int max = Collections.max(list); // 最大值
int min = Collections.min(list); // 最小值
Collections.swap(list, 0, 1); // 交换元素
// 不可修改集合
List<String> unmodifiable = Collections.unmodifiableList(list);
6. Queue和Deque
// Queue接口
Queue<String> queue = new LinkedList<>();
queue.offer("First");
queue.offer("Second");
String head = queue.poll(); // First
// Deque接口(双端队列)
Deque<String> deque = new ArrayDeque<>();
deque.push("Top");
deque.push("Middle");
String top = deque.pop(); // Middle
// 栈实现
Deque<Integer> stack = new ArrayDeque<>();
stack.push(1);
stack.push(2);
int top2 = stack.pop(); // 2
最佳实践
- 选择合适的集合:根据使用场景选择List/Set/Map
- 初始化集合大小:避免频繁扩容
- 使用接口类型声明:List
list = new ArrayList<>() - 线程安全考虑:多线程环境使用CopyOnWriteArrayList等
- 使用不可变集合:返回值使用Collections.unmodifiableList()
总结
Java集合框架是Java编程的核心组件,掌握各种集合的特点和使用场景,可以帮助你高效地处理数据。合理选择和使用集合,是编写高质量Java代码的基础。