集合框架概述
Java集合框架是Java提供的用于存储和操作一组对象的数据结构。它包含了一系列接口和实现类,提供了各种不同的数据存储和检索方式。
集合框架体系结构
Java集合框架主要由两个根接口组成:
- Collection接口:存储一组独立的元素
- Map接口:存储键值对(key-value pairs)
List接口及实现类
List是一个有序集合,允许重复元素。主要实现类包括ArrayList、LinkedList和Vector。
ArrayList
ArrayList是基于动态数组实现的,支持快速随机访问,但在中间插入或删除元素较慢。
import java.util.ArrayList; import java.util.List; public class ArrayListExample { public static void main(String[] args) { // 创建ArrayList Listlist = new ArrayList<>(); // 添加元素 list.add("Apple"); list.add("Banana"); list.add("Orange"); // 访问元素 System.out.println(list.get(0)); // 输出: Apple // 修改元素 list.set(1, "Grape"); // 遍历元素 for(String fruit : list) { System.out.println(fruit); } // 删除元素 list.remove("Orange"); System.out.println("列表大小: " + list.size()); } }
LinkedList
LinkedList是基于双向链表实现的,在插入和删除元素时效率较高,但随机访问较慢。
import java.util.LinkedList; import java.util.List; public class LinkedListExample { public static void main(String[] args) { // 创建LinkedList ListlinkedList = new LinkedList<>(); // 添加元素 linkedList.add("First"); linkedList.add("Second"); linkedList.add("Third"); // 在开头添加元素 ((LinkedList ) linkedList).addFirst("New First"); // 在末尾添加元素 ((LinkedList ) linkedList).addLast("New Last"); // 获取第一个和最后一个元素 System.out.println("第一个元素: " + ((LinkedList ) linkedList).getFirst()); System.out.println("最后一个元素: " + ((LinkedList ) linkedList).getLast()); } }
Set接口及实现类
Set是一个不包含重复元素的集合。主要实现类包括HashSet、LinkedHashSet和TreeSet。
HashSet
HashSet基于哈希表实现,不保证元素的顺序,允许null元素。
import java.util.HashSet; import java.util.Set; public class HashSetExample { public static void main(String[] args) { // 创建HashSet Setset = new HashSet<>(); // 添加元素 set.add("Apple"); set.add("Banana"); set.add("Orange"); set.add("Apple"); // 重复元素不会被添加 // 输出集合大小 System.out.println("集合大小: " + set.size()); // 输出: 3 // 检查是否包含元素 if(set.contains("Banana")) { System.out.println("包含Banana"); } // 删除元素 set.remove("Orange"); // 遍历元素 for(String fruit : set) { System.out.println(fruit); } } }
Map接口及实现类
Map存储键值对,每个键最多映射到一个值。主要实现类包括HashMap、LinkedHashMap和TreeMap。
HashMap
HashMap基于哈希表实现,允许null键和null值,不保证映射的顺序。
import java.util.HashMap; import java.util.Map; public class HashMapExample { public static void main(String[] args) { // 创建HashMap Mapmap = new HashMap<>(); // 添加键值对 map.put("Apple", 3); map.put("Banana", 5); map.put("Orange", 2); // 获取值 System.out.println("Apple的数量: " + map.get("Apple")); // 修改值 map.put("Apple", 10); // 检查是否包含键或值 if(map.containsKey("Banana")) { System.out.println("包含键Banana"); } // 获取所有键 System.out.println("所有键: " + map.keySet()); // 获取所有值 System.out.println("所有值: " + map.values()); // 遍历键值对 for(Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } }