1. list集合的三大实现
Java提供了几种List
接口的实现,包括:
- ArrayList: 基于动态数组实现,提供快速随机访问。添加和删除元素可能较慢,因为可能需要数组复制。
- LinkedList: 基于双向链表实现,提供快速的添加和删除操作,但随机访问速度较慢。
- Vector: 和
ArrayList
类似,但它是同步的。 - Stack: 继承自
Vector
,提供了栈的所有基本操作(LIFO:后进先出)。
示例代码:增删改查
import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
// 创建一个ArrayList对象
List<String> fruits = new ArrayList<>();
// 向List中添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 访问List中的元素
for (String fruit : fruits) {
System.out.println(fruit);
}
// 获取并打印List中的特定元素,例如第一个元素
System.out.println("The first fruit is: " + fruits.get(0));
// 删除List中的元素
fruits.remove("Banana");
// 检查元素是否存在于List中
boolean hasApple = fruits.contains("Apple");
System.out.println("Does the list have Apple? " + hasApple);
}
}
2. Set集合
以下是 Set
接口的一些关键特性:
- 不包含重复元素:
Set
集合不允许存储重复的元素。如果尝试添加已存在的元素,Set
集合将根据其实现细节决定是否接受新元素或保持不变。 - 无序:
Set
集合中的元素不维护特定的顺序。这意味着元素的插入顺序不一定与遍历时的顺序相同。 - 动态:
Set
的大小可以动态变化,可以在任何时候添加或删除元素。
Java提供了几种 Set
接口的实现,包括:
- HashSet: 基于哈希表实现,提供快速查找、添加和删除操作。
HashSet
不保证元素的顺序。 - LinkedHashSet: 与
HashSet
类似,但它维护了元素的插入顺序。 - TreeSet: 基于红黑树实现,可以按照自然顺序或自定义顺序对元素进行排序。
示例代码:
import java.util.Set;
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
// 创建一个HashSet对象
Set<String> set = new HashSet<>();
// 向Set中添加元素
set.add("Apple");
set.add("Banana");
set.add("Orange");
// 尝试添加重复的元素
set.add("Apple");
// 访问Set中的元素
for (String fruit : set) {
System.out.println(fruit);
}
// 检查Set中是否包含特定元素
boolean containsBanana = set.contains("Banana");
System.out.println("Does the set contain Banana? " + containsBanana);
// 从Set中删除元素
set.remove("Banana");
// 打印删除后的Set
System.out.println("Set after removing Banana: " + set);
}
}