Java 集合面试

引言

在 Java 编程中,集合是一种非常重要的数据结构。它们提供了一种方便的方式来存储和操作数据。在面试中,Java 集合通常是一个非常常见的话题。面试官经常会询问关于集合的问题来评估面试者的编程能力和对数据结构的理解。本文将介绍 Java 集合的基本概念、常见的集合类以及它们的用法。

集合的基本概念

集合是一种用于存储和操作对象的容器。相比于数组,集合可以动态地增加或删除元素,并且提供了更多的操作方法。Java 提供了一组丰富的集合类,每个类都有不同的特点和适用场景。

常见的集合类

List

List 是一个有序的集合,它允许重复元素。常见的 List 实现类有 ArrayList 和 LinkedList。在使用 List 时,我们可以通过索引来访问和修改元素。

// 创建一个 ArrayList
List<String> list = new ArrayList<>();

// 添加元素
list.add("apple");
list.add("banana");
list.add("cherry");

// 获取元素
String firstElement = list.get(0);
System.out.println(firstElement); // 输出 "apple"

// 修改元素
list.set(1, "orange");

// 删除元素
list.remove(2);

Set

Set 是一个不允许重复元素的集合。常见的 Set 实现类有 HashSet 和 TreeSet。当我们向 Set 中添加重复元素时,它会自动去除重复项。

// 创建一个 HashSet
Set<Integer> set = new HashSet<>();

// 添加元素
set.add(1);
set.add(2);
set.add(3);

// 判断元素是否存在
boolean containsTwo = set.contains(2);
System.out.println(containsTwo); // 输出 "true"

// 删除元素
set.remove(3);

Map

Map 是一种键值对的集合,每个键都是唯一的。常见的 Map 实现类有 HashMap 和 TreeMap。我们可以通过键来访问和修改对应的值。

// 创建一个 HashMap
Map<String, Integer> map = new HashMap<>();

// 添加键值对
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);

// 获取值
int appleValue = map.get("apple");
System.out.println(appleValue); // 输出 "1"

// 修改值
map.put("banana", 4);

// 删除键值对
map.remove("cherry");

集合的常用方法

除了基本的添加、删除和修改操作,Java 集合还提供了许多其他有用的方法。

遍历集合

我们可以使用迭代器或增强的 for 循环来遍历集合中的元素。

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");

// 使用迭代器遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

// 使用增强的 for 循环遍历
for (String element : list) {
    System.out.println(element);
}

排序集合

如果我们需要对集合中的元素进行排序,可以使用 Collections.sort() 方法(适用于 List)或者 TreeSet(适用于 Set)来实现。

List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);

// 排序 List
Collections.sort(list);
System.out.println(list); // 输出 "[1, 2, 3]"

Set<Integer> set = new TreeSet<>();
set.add(3);
set.add(1);
set.add(2);

// 排序 Set
System.out.println(set); // 输出 "[1, 2, 3]"

判断集合是否为空

我们可以使用 isEmpty() 方法来判断一个集合是否为空。

List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // 输出 "true"

list.add("element");
System.out.println(list.isEmpty()); // 输出 "false"

获取集合的大小

我们可以使用 size() 方法来获取集合的大小。

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana