当前位置: 首页 > news >正文

Java集合框架整体分类(完整的集合框架关系)

Java集合框架整体分类

    • 完整的集合框架关系
      • 1. Collection接口(单列集合)
        • List(有序、可重复)
        • Set(无序、不可重复)
        • Queue(队列)
      • 2. Map接口(双列集合)
    • 栈和队列在集合框架中的位置
      • 栈(Stack)的实现
      • 队列(Queue)的实现
      • 双端队列(Deque)的实现
    • 使用建议

完整的集合框架关系

Collection接口
├── List接口(有序可重复)
│   ├── ArrayList
│   ├── LinkedList  
│   └── Vector
│
├── Set接口(无序不可重复)
│   ├── HashSet
│   ├── LinkedHashSet
│   └── TreeSet
│
└── Queue接口(队列)├── LinkedList├── PriorityQueue└── Deque接口(双端队列)├── ArrayDeque└── LinkedListMap接口(键值对)
├── HashMap
├── LinkedHashMap
├── TreeMap
└── Hashtable

1. Collection接口(单列集合)

存储单个对象的集合,分为三大类:

List(有序、可重复)
// ArrayList - 基于数组,查询快,增删慢
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Python");
arrayList.add("Java"); // 可重复// LinkedList - 基于链表,增删快,查询慢
List<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);// Vector - 线程安全,已过时
List<String> vector = new Vector<>();
Set(无序、不可重复)
// HashSet - 基于哈希表,无序
Set<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Apple"); // 不会重复添加// LinkedHashSet - 保持插入顺序
Set<Integer> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add(3);
linkedHashSet.add(1);
linkedHashSet.add(2); // 输出顺序:3,1,2// TreeSet - 自然排序或定制排序
Set<String> treeSet = new TreeSet<>();
treeSet.add("Orange");
treeSet.add("Apple");
treeSet.add("Banana"); // 输出顺序:Apple, Banana, Orange
Queue(队列)
// LinkedList 实现队列
Queue<String> queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");
queue.poll(); // A// PriorityQueue - 优先级队列
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.offer(5);
priorityQueue.offer(1); // 1会先出队// ArrayDeque - 双端队列,也可用作栈
Queue<String> arrayDeque = new ArrayDeque<>();

2. Map接口(双列集合)

存储键值对的集合

// HashMap - 基于哈希表,无序
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Alice", 25);
hashMap.put("Bob", 30);// LinkedHashMap - 保持插入顺序
Map<String, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("key1", "value1");
linkedHashMap.put("key2", "value2");// TreeMap - 按键排序
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Orange", 5);
treeMap.put("Apple", 3); // 按键字母顺序排序// Hashtable - 线程安全,已过时
Map<String, String> hashtable = new Hashtable<>();

栈和队列在集合框架中的位置

栈(Stack)的实现

// 方式1:使用Stack类(继承自Vector,不推荐)
Stack<Integer> stack1 = new Stack<>();
stack1.push(1);
stack1.pop();// 方式2:使用Deque接口的实现类(推荐)
Deque<Integer> stack2 = new ArrayDeque<>();  // 或 LinkedList
stack2.push(1);
stack2.push(2);
stack2.pop(); // 2

队列(Queue)的实现

// LinkedList实现
Queue<String> queue1 = new LinkedList<>();
queue1.offer("A");
queue1.poll();// ArrayDeque实现  
Queue<Integer> queue2 = new ArrayDeque<>();
queue2.offer(1);
queue2.poll();

双端队列(Deque)的实现

Deque<String> deque = new ArrayDeque<>();
// 作为栈使用
deque.push("A");
deque.pop();// 作为队列使用
deque.offer("B");
deque.poll();// 双端操作
deque.offerFirst("C");
deque.offerLast("D");

使用建议

  1. 需要频繁查询:使用ArrayListHashMap
  2. 需要频繁增删:使用LinkedList
  3. 需要去重:使用HashSet
  4. 需要排序:使用TreeSetTreeMap
  5. 需要队列功能:使用LinkedListArrayDeque
  6. 需要栈功能:使用ArrayDeque(推荐)或Stack
  7. 需要线程安全:使用ConcurrentHashMapCopyOnWriteArrayList等并发集合
http://www.dtcms.com/a/516366.html

相关文章:

  • LangChain最详细教程之使用概述(三)
  • 前端-ES6-11
  • jquery在网站开发实例运用网站优化 流量
  • Day 07 C++入门 之实践例子-----通讯录管理系统的设计与构建
  • Linux系统服务器时区设置与网络时间同步
  • 【POST请求】POST请求——详解
  • 【Linux】fork函数详解
  • 泰安市做网站的公司wordpress git项目
  • ON1 Photo RAW MAX(照片后期处理软件)
  • 天河网站建设哪家强哈尔滨市建设网站
  • 梦幻联动!卡尔曼滤波结合LSTM,精度提高19%!
  • 网站开发的硬件环境展览设计网站有哪些
  • 网站维护升级访问中网站基站的建设方案
  • 【JDK、JRE、JVM】
  • 临沂网站维护公司做网站怎么收费多少
  • Qoder 上线提示词增强功能,将开发者从“提示词”的负担中解放出来
  • 中国山东网站建设网站编辑人才队伍建设
  • FreeRTOS队列消息查询
  • 医院数字IP广播系统:基于内部局域网的分布式数字化医院IP广播
  • 中山骏域网站建设专家西部网站邮箱登录
  • FFmpeg --14-视频解码:h264解码为yuv
  • PixelShuffle原理
  • 昆明做网站价格网站屏蔽省份
  • 创建网站需要学什么知识2017民非单位年检那个网站做
  • LABVIEW依赖关系显示文件删除、移动或重命名,每次打开都要指定很多路径【解决方案】
  • 东莞网站建设seo浙江住房和城乡建设厅网站首页
  • MLOps 的CI/CD VS DevOps 的CI/CD
  • spark组件-spark sql-读取数据
  • 网站开发大致需要哪些步骤可视化开发工具推荐
  • zabbix实现配置监控Windows设备、SNMP协议设备的全流程实操教程