苏州外贸网站建设推广服务商标设计注意事项
2026/4/17 1:35:57 网站建设 项目流程
苏州外贸网站建设推广服务,商标设计注意事项,郑州网站推广策,wordpress 模板引入文件文章目录前言一、集合框架概述#xff1a;为什么需要集合#xff1f;二、单列集合#xff1a;元素的线性容器2.1 List 集合#xff1a;有序可重复的容器2.2 Set 集合#xff1a;无序不可重复的容器三、双列集合#xff1a;键值对的映射容器3.1 Map 集合的核心特性四、单列…文章目录前言一、集合框架概述为什么需要集合二、单列集合元素的线性容器2.1 List 集合有序可重复的容器2.2 Set 集合无序不可重复的容器三、双列集合键值对的映射容器3.1 Map 集合的核心特性四、单列集合与双列集合的关联与转换4.1 Map 集合转单列集合4.2 单列集合模拟双列集合总结前言大家好我是程序员梁白开。在 Java 开发中集合框架是我们日常接触最频繁的工具之一它就像一个功能强大的 “工具箱”帮我们高效管理和操作数据。而在这个工具箱中单列集合和双列集合是两大核心分类它们各自有着明确的适用场景和设计思想。本文将从底层原理、核心实现类、使用场景等多个维度带你全面吃透这两类集合帮你在实际开发中精准选型、高效编码。一、集合框架概述为什么需要集合在 Java 中数组虽然可以存储多个元素但它存在长度固定、只能存储同一类型元素、插入删除效率低等局限性。而集合框架的出现正是为了解决这些问题它提供了一系列灵活、高效的数据结构支持动态扩容、多种数据存储方式和丰富的操作方法。Java 集合框架主要分为两大体系单列集合一次存储一个元素顶层接口为Collection我们常用的List、Set都属于这一体系。双列集合一次存储一对元素键值对 Key-Value顶层接口为Map通过键来唯一标识一个值常用的HashMap、TreeMap等都属于此类。二、单列集合元素的线性容器单列集合的核心特点是每个位置只存放一个元素它就像一个有序的货架每个格子里放一件商品。根据元素是否有序、是否可重复单列集合又分为List和Set两大分支。2.1 List 集合有序可重复的容器List集合的核心特性是元素有序插入顺序和存储顺序一致且元素可重复它允许通过索引来访问元素就像数组一样灵活。实战案例ArrayList vs LinkedList 性能对比publicclassListPerformanceTest{publicstaticvoidmain(String[]args){ListIntegerarrayListnewArrayList();ListIntegerlinkedListnewLinkedList();// 测试尾部插入longstartTimeSystem.currentTimeMillis();for(inti0;i100000;i){arrayList.add(i);}System.out.println(ArrayList尾部插入耗时(System.currentTimeMillis()-startTime)ms);startTimeSystem.currentTimeMillis();for(inti0;i100000;i){linkedList.add(i);}System.out.println(LinkedList尾部插入耗时(System.currentTimeMillis()-startTime)ms);// 测试中间插入startTimeSystem.currentTimeMillis();for(inti0;i1000;i){arrayList.add(5000,i);}System.out.println(ArrayList中间插入耗时(System.currentTimeMillis()-startTime)ms);startTimeSystem.currentTimeMillis();for(inti0;i1000;i){linkedList.add(5000,i);}System.out.println(LinkedList中间插入耗时(System.currentTimeMillis()-startTime)ms);}}运行结果分析ArrayList 在尾部插入时效率和 LinkedList 相当但在中间插入时由于需要移动大量元素效率远低于 LinkedList。这也印证了两者的适用场景差异。2.2 Set 集合无序不可重复的容器Set集合的核心特性是元素无序插入顺序和存储顺序不一定一致且元素不可重复它通过元素的equals()和hashCode()方法来保证唯一性就像一个不允许重复的标签库。关键知识点HashSet 去重原理HashSet 的去重机制依赖于两个方法先调用元素的hashCode()方法计算哈希值确定元素在哈希表中的位置。如果该位置已有元素则调用equals()方法比较两个元素是否相等。若equals()返回 true则视为重复元素不添加否则以链表或红黑树的形式存储在该位置。注意如果我们自定义类作为 HashSet 的元素必须重写hashCode()和equals()方法否则无法保证去重效果。三、双列集合键值对的映射容器双列集合的核心特点是以键值对Key-Value的形式存储元素它就像一本字典通过唯一的键Key可以快速找到对应的值Value。双列集合的顶层接口是Map它不继承Collection接口是一个独立的体系。3.1 Map 集合的核心特性键Key是唯一的值Value可以重复。一个键只能对应一个值当存入相同键的键值对时新值会覆盖旧值。键和值都可以是任意引用类型数据建议使用不可变类型作为 Key如 String、Integer 等。TreeMap 支持自然排序实现 Comparable 接口和自定义排序通过 Comparator 接口以下是自定义排序的示例publicclassTreeMapCustomSort{publicstaticvoidmain(String[]args){// 自定义排序按字符串长度排序长度相同则按字典序排序MapString,IntegertreeMapnewTreeMap(newComparatorString(){Overridepublicintcompare(Stringo1,Stringo2){intlen1o1.length();intlen2o2.length();if(len1!len2){returnlen1-len2;// 升序排列}else{returno1.compareTo(o2);// 字典序升序}}});treeMap.put(apple,1);treeMap.put(banana,2);treeMap.put(pear,3);treeMap.put(orange,4);// 遍历输出for(Map.EntryString,Integerentry:treeMap.entrySet()){System.out.println(entry.getKey(): entry.getValue());}}}四、单列集合与双列集合的关联与转换虽然单列集合和双列集合是两大独立体系但它们之间可以通过一些方法进行转换在实际开发中非常实用。4.1 Map 集合转单列集合keySet()将 Map 的所有键转换为 Set 集合。values()将 Map 的所有值转换为 Collection 集合。entrySet()将 Map 的所有键值对转换为 Set 集合每个元素是 Map.Entry 对象。示例代码MapString,IntegermapnewHashMap();map.put(Java,1);map.put(Python,2);map.put(C,3);// 键转SetSetStringkeySetmap.keySet();// 值转CollectionCollectionIntegervaluesmap.values();// 键值对转SetSetMap.EntryString,IntegerentrySetmap.entrySet();4.2 单列集合模拟双列集合我们可以使用List存储自定义的键值对对象来模拟 Map 的功能这种方式在一些特殊场景下如需要重复键非常有用。示例代码// 自定义键值对类classKeyValueK,V{privateKkey;privateVvalue;// 构造方法、getter、setter省略}// 使用List模拟MapListKeyValueString,IntegerlistMapnewArrayList();listMap.add(newKeyValue(Java,1));listMap.add(newKeyValue(Python,2));listMap.add(newKeyValue(Java,3));// 允许重复键总结Java 集合框架是 Java 开发的基础单列集合和双列集合作为其中的核心掌握它们的原理和用法是每个 Java 开发者的必备技能。单列集合适合存储单个元素List注重有序可重复Set注重无序不可重复。双列集合适合存储键值对映射关系HashMap注重高效查找TreeMap注重排序功能。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询