Java基础十三: List

发布于:2025-08-10 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

1.Java LinkedList 的高级应用与示例

1.1 LinkedList的基本使用

基本操作示例

1.2 LinkedList独有的方法

特定方法示例

1.3 队列模式(先进先出)

队列模式示例

1.4 栈模式(先进后出)

栈模式示例

总结

2.Java Vector 类的使用和特性

2.1 Vector的使用

基本操作示例

2.2 Vector的发展历史

旧方法示例

总结

3.Java 中 Stack 和 HashSet 的使用及特性

3.1Stack 的使用

示例代码

3.2 HashSet 的使用

3.2.1 HashSet的基本使用

示例代码

3.2.2 HashSet的特点

示例代码

总结


1.Java LinkedList 的高级应用与示例

1.1 LinkedList的基本使用

  • 目的:深入了解 LinkedList 类的基本用法。

  • 特点LinkedList 是一个双向链表,提供了多种方法来操作列表元素。

基本操作示例
LinkedList<String> list = new LinkedList<>();
list.add("小希"); // 添加元素
list.add(5, "小翔"); // 添加元素到指定位置
list.set(2, "小君"); // 设置指定位置的元素
String string = list.get(2); // 获取指定位置的元素
int size = list.size(); // 获取集合大小

1.2 LinkedList独有的方法

  • 特点:提供了一系列操作首尾元素的方法。

  • 方法

    • addFirst, offerFirst, push:在列表首部添加元素。

    • addLast, offerLast, offer:在列表尾部添加元素。

    • getFirst, getLast, peekFirst, peekLast:获取首尾元素。

    • removeFirst, removeLast, pollFirst, pollLast:删除首尾元素。

特定方法示例
LinkedList<String> list = new LinkedList<>();
list.addFirst("aaa"); // 添加到第一个位置
list.addLast("xxx"); // 添加到最后一个位置
String firstElement = list.getFirst(); // 获取第一个元素
list.removeFirstOccurrence("元素"); // 删除第一次出现的指定元素

1.3 队列模式(先进先出)

  • 作用:利用 LinkedList 实现队列功能。

  • 操作

    • 使用 add 方法添加元素。

    • 使用 removeFirst 方法移除并返回队列的头部元素。

队列模式示例
LinkedList<String> queue = new LinkedList<>();
queue.add("aaa"); // 入队
String head = queue.removeFirst(); // 出队

1.4 栈模式(先进后出)

  • 作用:利用 LinkedList 实现栈功能。

  • 操作

    • 使用 push 方法添加元素到栈顶。

    • 使用 pop 方法移除并返回栈顶元素。

栈模式示例
LinkedList<String> stack = new LinkedList<>();
stack.push("aaa"); // 入栈
String top = stack.pop(); // 出栈

总结

LinkedList 在 Java 集合框架中是一个非常灵活的类,不仅可以作为列表使用,还可以轻松地作为队列或栈实现。其独特的双向链表结构提供了高效的元素插入和删除操作。通过合理利用 LinkedList 的这些特性,可以在多种场景下实现高效的数据操作。

2.Java Vector 类的使用和特性

2.1 Vector的使用

  • 目的:探索 Vector 类的基本操作和使用。

  • 特点Vector 是一个同步的动态数组,提供线程安全的集合操作。

基本操作示例
Vector<String> list = new Vector<>();
list.add("小希"); // 添加元素
list.add(5, "小翔"); // 添加元素到指定位置
list.set(2, "小君"); // 设置指定位置的元素
String string = list.get(2); // 获取指定位置的元素
int size = list.size(); // 获取集合大小
  • 批量操作:使用 addAllCollections.addAll 进行集合的批量添加。

  • 检查和删除:使用 contains, remove, removeAll 等方法进行元素检查和删除。

  • 子集和数组转换subList 获取子集,toArray 转换为数组。

  • 遍历方法:支持 for 循环,foreach 循环,IteratorListIterator 遍历。

2.2 Vector的发展历史

  • 历史背景Vector 类自 JDK 1.0 就存在,比集合框架更早。

  • 集合框架引入:JDK 1.2 引入了集合框架,Vector 被整合进 List 接口。

  • 向后兼容:为了兼容旧代码,Java 保留了 Vector

旧方法示例
Vector<String> v = new Vector<>();
v.addElement("aaa"); // 添加元素
v.removeElement("bbb"); // 删除元素
Enumeration<String> elements = v.elements(); // 遍历集合
while(elements.hasMoreElements()){
    String element = elements.nextElement();
    System.out.println(element);
}
  • 同步特性Vector 的所有操作都是线程安全的,但这也导致性能稍低于 ArrayList

  • 替代方案:在非多线程环境下,通常推荐使用 ArrayList 代替 Vector

总结

Vector 是 Java 早期集合类之一,提供线程安全的动态数组实现。尽管在现代 Java 应用中,ArrayList 更为常用,Vector 仍然在一些特定场景下(如线程安全需求较高的环境)有其应用价值。了解 Vector 的历史和特性有助于更好地理解 Java 集合框架的发展及其各类集合的适用场景。

3.Java 中 Stack 和 HashSet 的使用及特性

3.1Stack 的使用

  • 知识点:Stack 类的基本使用,栈模式(先进后出)。

  • 继承关系:Stack 继承自 Vector 类。

  • 基本操作

    • push:将元素压入栈顶。

    • pop:移除并返回栈顶元素。

    • peek:仅返回栈顶元素,不删除。

    • empty:检查栈是否为空。

    • search:查找元素在栈中的位置。

示例代码
Stack<String> stack = new Stack<>();
stack.push("aaa");
String pop = stack.pop(); // 移除并返回栈顶元素
String peek = stack.peek(); // 返回栈顶元素
boolean isEmpty = stack.empty(); // 检查栈是否为空
int position = stack.search("bbb"); // 查找元素位置

3.2 HashSet 的使用

3.2.1 HashSet的基本使用
  • 目的:展示 HashSet 的基本操作。

  • 特点:HashSet 是基于 HashMap 实现的,提供了快速的插入、搜索和删除操作。

  • 基本操作

    • add:添加元素。

    • remove:删除元素。

    • contains:检查是否包含某个值。

    • isEmpty:检查集合是否为空。

    • size:获取集合的大小。

    • toArray:将集合转换为数组。

示例代码
HashSet<String> set = new HashSet<>();
set.add("小希");
set.remove("小光");
boolean contains = set.contains("小希");
boolean isEmpty = set.isEmpty();
int size = set.size();
Object[] array = set.toArray();
3.2.2 HashSet的特点
  • 特点:HashSet 具有唯一性(无重复元素)和无序性。

  • 实现原理:通过哈希表(实际上是 HashMap 的实例)实现。

  • 用途:适用于需要快速查找且不允许重复元素的场景。

示例代码
HashSet<String> set = new HashSet<>();
set.add("aaa");
set.add("bbb");
set.add("ccc"); // 添加元素
set.add("ddd");
set.add("Aa");
set.add("BB");

总结

  • Stack:提供了典型的栈操作,适用于需要先进后出(LIFO)数据结构的场景。

  • HashSet:提供了高效的元素存储和访问,适用于需要快速访问且元素唯一的场景,但不保证元素的顺序。


网站公告

今日签到

点亮在社区的每一天
去签到