Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第四章:集合框架

第四章:集合框架

4.2 常见集合类(List, Set, Map)

Java集合框架提供了多种集合类,用于存储和操作数据。这些集合类主要分为三类:List、Set和Map。它们各自有不同的特点和适用场景。

1. List(列表)

List是一个有序的集合,允许重复元素,可以通过索引访问元素。常见的实现类包括:

1.1 ArrayList

  • 特点:基于动态数组实现,支持快速随机访问(通过索引)。
  • 适用场景:适用于频繁查询和遍历,但插入和删除操作效率较低(需要移动元素)。
  • 示例代码:
    List<String> list = new ArrayList<>();
    list.add("Java");
    list.add("Python");
    list.add(1, "C++"); // 在指定位置插入元素
    System.out.println(list.get(0)); // 输出:Java
    

1.2 LinkedList

  • 特点:基于双向链表实现,插入和删除操作效率高,但随机访问效率较低。
  • 适用场景:适用于频繁插入和删除的场景。
  • 示例代码:
    List<String> list = new LinkedList<>();
    list.add("Java");
    list.addFirst("Python"); // 在头部插入元素
    list.removeLast(); // 删除尾部元素
    

1.3 Vector

  • 特点:线程安全的动态数组,性能较低,通常不推荐使用。
  • 替代方案:可以使用Collections.synchronizedList包装ArrayList。

2. Set(集合)

Set是一个不允许重复元素的集合,通常用于去重或判断元素是否存在。常见的实现类包括:

2.1 HashSet

  • 特点:基于哈希表实现,元素无序,插入和查询效率高(平均时间复杂度为O(1))。
  • 适用场景:快速去重或判断元素是否存在。
  • 示例代码:
    Set<String> set = new HashSet<>();
    set.add("Java");
    set.add("Python");
    set.add("Java"); // 重复元素不会被添加
    System.out.println(set.contains("Python")); // 输出:true
    

2.2 LinkedHashSet

  • 特点:在HashSet的基础上维护了元素的插入顺序。
  • 适用场景:需要去重且保留插入顺序的场景。

2.3 TreeSet

  • 特点:基于红黑树实现,元素按自然顺序或自定义顺序排序。
  • 适用场景:需要有序集合的场景。
  • 示例代码:
    Set<String> set = new TreeSet<>();
    set.add("Java");
    set.add("Python");
    set.add("C++");
    System.out.println(set); // 输出:[C++, Java, Python](按字母顺序排序)
    

3. Map(映射)

Map是一种键值对(Key-Value)集合,键不允许重复。常见的实现类包括:

3.1 HashMap

  • 特点:基于哈希表实现,键无序,插入和查询效率高。
  • 适用场景:快速通过键查找值。
  • 示例代码:
    Map<String, Integer> map = new HashMap<>();
    map.put("Java", 1);
    map.put("Python", 2);
    System.out.println(map.get("Java")); // 输出:1
    

3.2 LinkedHashMap

  • 特点:在HashMap的基础上维护了键的插入顺序或访问顺序。
  • 适用场景:需要保留键的插入顺序或实现LRU缓存。

3.3 TreeMap

  • 特点:基于红黑树实现,键按自然顺序或自定义顺序排序。
  • 适用场景:需要有序键值对的场景。
  • 示例代码:
    Map<String, Integer> map = new TreeMap<>();
    map.put("Java", 1);
    map.put("Python", 2);
    map.put("C++", 3);
    System.out.println(map); // 输出:{C++=3, Java=1, Python=2}(按字母顺序排序)
    

总结

集合类型特点常见实现类
List有序、允许重复ArrayList, LinkedList, Vector
Set无序、不允许重复HashSet, LinkedHashSet, TreeSet
Map键值对、键不允许重复HashMap, LinkedHashMap, TreeMap

选择合适的集合类可以显著提高程序的性能和可读性。

Last Updated:: 3/27/25, 12:48 PM