Java 集合框架提供了一组实现常见数据结构(如列表、集合、映射等)的类和接口,使得数据的存储、检索、操作更加方便和高效。集合框架主要包括以下核心接口和类:
Collection
接口是集合框架的根接口,它定义了一组通用的方法,适用于所有集合类。主要有:
List
接口继承自 Collection
接口,表示有序的集合,允许重复元素。主要特点是可以通过索引访问元素。常用的实现类有 ArrayList
、LinkedList
、Vector
。
Set
接口继承自 Collection
接口,表示不允许重复元素的集合。主要特点是不维护元素的顺序。常用的实现类有 HashSet
、LinkedHashSet
、TreeSet
。
Map
接口表示键值对的集合,每个键关联一个值。键不能重复,但值可以。主要方法包括:
HashMap
基础上,保持元素插入顺序。Queue
接口表示一种先进先出(FIFO)的数据结构,通常用于处理任务调度。主要方法包括 offer(E e)
、poll()
、peek()
。
Deque
接口是 Queue
接口的扩展,表示一种双端队列。可以在两端插入和删除元素。主要方法包括 addFirst(E e)
、addLast(E e)
、removeFirst()
、removeLast()
。
当使用 ArrayList
类时,您可以执行许多常见的操作,例如添加、获取、修改、删除元素以及其他一些集合操作。以下是 ArrayList
类的详细使用说明:
import java.util.ArrayList;
public class ArrayListUsage {
public static void main(String[] args) {
// 创建一个 ArrayList
ArrayList<String> cityList = new ArrayList<>();
}
}
使用 add
方法向 ArrayList 中添加元素。
cityList.add("Beijing");
cityList.add("Shanghai");
cityList.add("Guangzhou");
使用 add
方法的指定索引位置,将元素插入 ArrayList。
cityList.add(1, "Chengdu");
使用 get
方法通过索引获取元素。
String city = cityList.get(0);
使用 set
方法通过索引修改元素。
cityList.set(1, "Nanjing");
使用 remove
方法通过元素值或索引删除元素。
cityList.remove("Guangzhou");
cityList.remove(0);
使用 contains
方法判断 ArrayList 中是否包含某个元素。
boolean containsChengdu = cityList.contains("Chengdu");
使用 size
方法获取 ArrayList 的大小。
int cityCount = cityList.size();
使用 for-each 循环遍历 ArrayList。
for (String city : cityList) {
System.out.println(city);
}
import java.util.ArrayList;
public class ArrayListUsage {
public static void main(String[] args) {
// 创建一个 ArrayList
ArrayList<String> cityList = new ArrayList<>();
// 添加元素
cityList.add("Beijing");
cityList.add("Shanghai");
cityList.add("Guangzhou");
// 插入元素
cityList.add(1, "Chengdu");
// 获取元素和修改元素
String firstCity = cityList.get(0);
cityList.set(1, "Nanjing");
// 删除元素
cityList.remove("Guangzhou");
cityList.remove(0);
// 查找元素
boolean containsChengdu = cityList.contains("Chengdu");
// 获取大小
int cityCount = cityList.size();
// 遍历 ArrayList
System.out.println("遍历城市列表:");
for (String city : cityList) {
System.out.println(city);
}
}
}
这个示例演示了如何使用 ArrayList
进行添加、获取、修改、删除元素以及其他一些集合操作。
明白了,以下是更简洁的介绍:
Set<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Orange");
boolean containsBanana = hashSet.contains("Banana");
hashSet.remove("Orange");
int setSize = hashSet.size();
for (String fruit : hashSet) {
System.out.println(fruit);
}
这些简单的代码片段展示了 HashSet
的基本操作,包括创建、添加、查找、删除、获取大小和遍历。
Set<Integer> unionSet = new HashSet<>(set1);
unionSet.addAll(set2);
Set<Integer> intersectionSet = new HashSet<>(set1);
intersectionSet.retainAll(set2);
Set<Integer> differenceSet = new HashSet<>(set1);
differenceSet.removeAll(set2);
boolean isSubset = set1.containsAll(set2);
这行代码判断 set2
是否为 set1
的子集,如果是,则 isSubset
为 true
。
Set<String> treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Orange");
String firstElement = ((TreeSet<String>) treeSet).first();
treeSet.remove("Orange");
int treeSetSize = treeSet.size();
for (String fruit : treeSet) {
System.out.println(fruit);
}
这些简洁的代码片段展示了 TreeSet
的基本操作,包括创建、添加、查找、删除、获取大小和遍历。
在 Java 中,对象的顺序通常涉及到两个方面:插入顺序和排序顺序。
插入顺序(Insertion Order): 插入顺序指的是元素被添加到集合的顺序。例如,如果你按照顺序添加元素 A、B、C 到集合中,那么在遍历集合时,元素的顺序将是 A、B、C。
示例:
Set<String> insertionOrderSet = new HashSet<>();
insertionOrderSet.add("Apple");
insertionOrderSet.add("Banana");
insertionOrderSet.add("Orange");
for (String fruit : insertionOrderSet) {
System.out.println(fruit);
}
输出可能是:
Apple
Banana
Orange
排序顺序(Sorting Order): 排序顺序指的是元素按照一定的顺序排列。在有序的集合中,元素通常按照升序或降序排列。TreeSet
就是一个有序集合的例子,它使用红黑树数据结构来保持元素的顺序。
示例:
Set<String> sortingOrderSet = new TreeSet<>();
sortingOrderSet.add("Apple");
sortingOrderSet.add("Banana");
sortingOrderSet.add("Orange");
for (String fruit : sortingOrderSet) {
System.out.println(fruit);
}
输出可能是:
Apple
Banana
Orange
需要注意的是,有些集合类(如 HashSet
)并不保证元素的排序,而有些集合类(如 TreeSet
)则明确保持元素的排序。在选择集合类时,可以根据对顺序的需求来选择合适的实现。