TreeSet 类
TreeSet 类是基于红黑树的数据结构实现的,主要特点如下:
- 不允许包含重复元素;
- 允许使用 null 值;
- 线程不安全;
- 插入和删除速度较慢,但查询速度快,可以对元素进行排序。
示例代码:
```java
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
// 创建一个空的 TreeSet
TreeSet<String> set = new TreeSet<>();
// 向 TreeSet 中添加元素
set.add("Apple");
set.add("Banana");
set.add("Cherry");
// 输出 TreeSet 中的元素
System.out.println(set);
// 判断 TreeSet 中是否包含某个元素
System.out.println("TreeSet contains Banana: " + set.contains("Banana"));
// 删除指定元素
set.remove("Banana");
// 输出删除元素后的 TreeSet
System.out.println(set);
}
}
```
(3)Queue 接口
Queue 接口表示一个先进先出(FIFO)的集合。Queue 接口的主要实现类有 ArrayDeque、LinkedList 和 PriorityQueue。
① ArrayDeque 类
ArrayDeque 类是基于动态数
数组的数据结构实现的,主要特点如下:
- 允许包含重复元素;
- 允许使用 null 值;
- 线程不安全;
- 插入和删除速度快,查询速度较慢。
示例代码:
```java
import java.util.ArrayDeque;
public class ArrayDequeExample {
public static void main(String[] args) {
// 创建一个空的 ArrayDeque
ArrayDeque<String> queue = new ArrayDeque<>();
// 向 ArrayDeque 中添加元素
queue.add("Apple");
queue.add("Banana");
queue.add("Cherry");
// 输出 ArrayDeque 中的元素
System.out.println(queue);
// 获取 ArrayDeque 中的元素个数
System.out.println("Size: " + queue.size());
// 删除指定位置的元素
queue.remove(1);
// 输出删除元素后的 ArrayDeque
System.out.println(queue);
// 获取指定位置的元素
System.out.println("Element at index 1: " + queue.get(1));
}
}
```
② LinkedList 类
LinkedList 类是基于双向链表的数据结构实现的,主要特点如下:
- 允许包含重复元素;
- 允许使用 null 值;
- 线程不安全;
- 插入和删除速度快,查询速度较慢。
示例代码:
```java
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
// 创建一个空的 LinkedList
LinkedList<String> queue = new LinkedList<>();
// 向 LinkedList 中添加元素
queue.add("Apple");
queue.add("Banana");
queue.add("Cherry");
// 输出 LinkedList 中的元素
System.out.println(queue);
// 获取 LinkedList 中的元素个数
System.out.println("Size: " + queue.size());
// 删除指定位置的元素
queue.remove(1);
// 输出删除元素后的 LinkedList
System.out.println(queue);
// 获取指定位置的元素
System.out.println("Element at index 1: " + queue.get(1));
}
}
```
③ PriorityQueue 类
PriorityQueue 类是基于堆的数据结构实现的,主要特点如下:
- 不允许包含重复元素;
- 允许使用 null 值;
- 线程不安全;
- 插入和删除速度快,查询速度较慢。
示例代码:
```java
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
// 创建一个空的 PriorityQueue
PriorityQueue<Integer> queue = new PriorityQueue<>();
// 向 PriorityQueue 中添加元素
queue.add(3);
queue.add(1);
queue.add(4);
queue.add(1);
queue.add(5);
// 输出 PriorityQueue 中的元素
System.out.println(queue);
// 获取 PriorityQueue 中的元素个数
System.out.println("Size: " + queue.size());
// 删除并返回队列中的头元素
System.out.println("Removed head element: " + queue.poll());
// 输出删除元素后的 PriorityQueue
System.out.println(queue);
}
}