java打卡学习6:集合框架 Collection

集合框架概述

集合框架(Collection Framework)是Java中用于存储、操作和传输数据的标准化架构。它提供了一组接口、实现类和算法,用于处理对象集合,简化了数据结构的操作。

核心目标

  • 性能优异:提供不同数据结构的实现(如数组、链表、哈希表、树),以满足不同场景的性能需求。

  • 互操作性:不同集合类型之间的交互有统一的接口规范。

  • 易学易用 :API 设计清晰,方法命名一致(如 addremovesize)。

与数组的区别

特性 数组 集合
长度 固定 动态可变
存储类型 基本类型 + 对象 只能存储对象(基本类型需包装类)
功能 简单,仅有 length 属性 丰富,提供排序、查找、同步等高级功能

核心接口

  • Collection :根接口,定义了通用方法(如add(), remove(), size())。
  • List :有序集合,允许重复元素(如ArrayList, LinkedList)。
  • Set :无序集合,不允许重复元素(如HashSet, TreeSet)。
  • Queue :队列结构,支持先进先出(FIFO)操作(如PriorityQueue)。
  • Map :键值对存储,独立于Collection接口(如HashMap, TreeMap)。

常用实现类

  • ArrayList:基于动态数组,适合随机访问。
  • LinkedList:基于双向链表,适合频繁插入/删除。
  • HashSet:基于哈希表,快速查找,无序。
  • TreeSet:基于红黑树,元素自动排序。
  • HashMap :键值对存储,允许null键/值。
  • LinkedHashMap:保持插入顺序或访问顺序。

示例代码

java 复制代码
// List示例  
List<String> list = new ArrayList<>();  
list.add("Java");  
list.add("Python");  
System.out.println(list); // 输出: [Java, Python]  

// Set示例  
Set<Integer> set = new HashSet<>();  
set.add(10);  
set.add(20);  
set.add(10); // 重复元素不会被添加  
System.out.println(set); // 输出: [20, 10]  

// Map示例  
Map<String, Integer> map = new HashMap<>();  
map.put("A", 1);  
map.put("B", 2);  
System.out.println(map.get("A")); // 输出: 1  

工具类

  • Collections :提供静态方法(如排序sort()、反转reverse())。
  • Arrays :处理数组与集合的转换(如asList())。

注意事项

  • 线程安全:多数集合类非线程安全,需使用Collections.synchronizedList()或并发包(如ConcurrentHashMap)。
  • 性能选择:根据场景选择实现类(如频繁查询用ArrayList,频繁修改用LinkedList)。

List 体系(重点)

特点:有序、可重复、有下标

常用实现类:

  1. ArrayList

    • 底层:动态数组
    • 优点:查询快、遍历快
    • 缺点:增删慢(要移动元素)
    • 线程不安全
  2. LinkedList

    • 底层:双向链表
    • 优点:增删快
    • 缺点:查询慢
    • 可当作栈、队列、双端队列
  3. Vector

    • 底层数组,线程安全,效率低,基本不用

Set 体系(重点)

特点:无序、不可重复、无索引

常用实现类:

  1. HashSet

    • 底层:HashMap(哈希表)
    • 去重原理:hashCode() + equals()
    • 无序、高效
  2. LinkedHashSet

    • 底层:哈希表 + 双向链表
    • 保证:插入有序 + 去重
  3. TreeSet

    • 底层:红黑树
    • 特点:自动排序(自然排序 / 比较器排序)
    • 去重:根据比较结果是否为 0

遍历方式(Collection 通用)

  1. 迭代器 Iterator(最通用)

    Iterator<String> it = coll.iterator();
    while (it.hasNext()) {
    String s = it.next();
    }

  2. 增强 for 循环

    for (String s : coll) { }

  3. forEach + Lambda(JDK8+)

    coll.forEach(s -> System.out.println(s));

选择建议(面试/开发实用):

相关推荐
Tigshop开源商城19 小时前
『物流设置+SEO优化』Tigshop开源商城系统 JAVA v5.8.26 版本更新!
java·开源商城系统·tigshop
Purple Coder21 小时前
BMS学习经验
学习
Tigshop开源商城21 小时前
『订单税率+收货地址校验国家字段』功能上新|跨境运营更高效,Tigshop开源商城系统 JAVA v5.8.23 版本更新
java·开源商城系统·tigshop
REDcker21 小时前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
经济元宇宙21 小时前
摄影培训行业百科:机构选择与学习路径全解析
大数据·人工智能·学习
じ☆冷颜〃1 天前
实分析与测度论、复分析、傅里叶分析、泛函分析、凸分析概述.
笔记·学习·数学建模·拓扑学·傅立叶分析
星夜夏空991 天前
STM32单片机学习(10)——GPIO输入
stm32·单片机·学习
kobesdu1 天前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
neo_Ggx231 天前
Maven 版本管理详解:SNAPSHOT、Release 与 Nexus 仓库的区别和影响
java·maven
matlabgoodboy1 天前
软件开发定制小程序APP帮代做java代码代编写C语言设计python编程
java·c语言·小程序