Java部分集合有序性记录

Java集合框架之LinkedHashSet详解 在Java开发中,集合类是非常常用的一种数据类型。而集合类中的Set集合是一种不允许重复元素的集合。在Set集合中,除了HashSet和TreeSet之外,还有一种集合类叫做LinkedHashSet。本文将会介绍LinkedHashSet的概念,源代码解析,应用场景案例,优缺点分析,类代码方法介绍以及测试用例。LinkedHashSet是一种Set集合类,它是HashSet和的结合体。它既有HashSet的快速查找和不允许重复元素的特性,又有的有序性和迭代器的快速遍历特性。 阅读详情

1表格结果

序号集合名称进出集合key大小
1HashMap无序无序
2Hashtable无序无序
3TreeMap无序从小到大
4LinkedHashMap先进先出无序
5ConcurrentSkipListMap无序从小到大
6ConcurrentHashMap无序无序
7ArrayList先进先出无序
8LinkedList先进先出无序
    

2代码验证

        System.out.println("放入顺序为:a:111 c:333 b:222 d:444 ");
        System.out.println("HashMap 排序测试");
        Map map = new HashMap();
        map.put("a1", "111");
        map.put("c1", "333");
        map.put("b1", "222");
        map.put("d1", "444");
        Iterator iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            Object key = iterator.next();
            System.out.println("key:" + key + " value:" + map.get(key));
        }
        System.out.println("HashMap 进出无次序 ; key大小无次序 ");
        System.out.println("-----------------------------------------------------------");


        System.out.println("Hashtable 排序测试");
        Hashtable tab = new Hashtable();
        tab.put("a", "111");
        tab.put("c", "333");
        tab.put("b", "222");
        tab.put("d", "444");
        Iterator iterator_1 = tab.keySet().iterator();
        while (iterator_1.hasNext()) {
            Object key = iterator_1.next();
            System.out.println("key :" + key + " value:" + tab.get(key));
        }
        System.out.println("Hashtable 进出无次序 ; key大小无次序 ");
        System.out.println("-----------------------------------------------------------");

        System.out.println("TreeMap 排序测试");
        TreeMap tmp = new TreeMap();
        tmp.put("a1", "111");
        tmp.put("c2", "333");
        tmp.put("b3", "222");
        tmp.put("d4", "444");
        Iterator iterator_2 = tmp.keySet().iterator();
        while (iterator_2.hasNext()) {
            Object key = iterator_2.next();
            System.out.println("key:" + key + " value:" + tmp.get(key));
        }
        System.out.println("TreeMap 进出无次序 ; key大小从小到大 ");
        System.out.println("-----------------------------------------------------------");

        System.out.println("LinkedHashMap 排序测试");
        LinkedHashMap linkedHashMap = new LinkedHashMap();
        linkedHashMap.put("a", "111");
        linkedHashMap.put("c", "333");
        linkedHashMap.put("b", "222");
        linkedHashMap.put("d", "444");
        Iterator iterator2 = linkedHashMap.keySet().iterator();
        while (iterator2.hasNext()) {
            Object key = iterator2.next();
            System.out.println("key:" + key + " value:" + linkedHashMap.get(key));
        }
        System.out.println("LinkedHashMap 先进先出; key大小无次序 ");
        System.out.println("-----------------------------------------------------------");
        ConcurrentSkipListMap concurrentSkipListMap = new ConcurrentSkipListMap();
        concurrentSkipListMap.put("a", "111");
        concurrentSkipListMap.put("c", "333");
        concurrentSkipListMap.put("b", "222");
        concurrentSkipListMap.put("d", "444");
        Iterator iterator3 = concurrentSkipListMap.keySet().iterator();
        while (iterator3.hasNext()) {
            Object key = iterator3.next();
            System.out.println("key:" + key + " value:" + concurrentSkipListMap.get(key));
        }
        System.out.println("ConcurrentSkipListMap 进出无次序 ; key大小从小到大  ");
        System.out.println("-----------------------------------------------------------");
        System.out.println();
        ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
        concurrentHashMap.put("a1", "111");
        concurrentHashMap.put("c1", "333");
        concurrentHashMap.put("b1", "222");
        concurrentHashMap.put("d1", "444");
        Iterator iterator4 = concurrentHashMap.keySet().iterator();
        while (iterator4.hasNext()) {
            Object key = iterator4.next();
            System.out.println("key:" + key + " value:" + concurrentHashMap.get(key));
        }
        System.out.println("ConcurrentHashMap 进出无次序 ; key大小无次序  ");
        System.out.println("-----------------------------------------------------------");
        System.out.println();

        System.out.println("ArrayList 排序测试");
        System.out.println("放入顺序为:111 333 222 444");
        ArrayList arrayList = new ArrayList();
        arrayList.add("111");
        arrayList.add("333");
        arrayList.add("222");
        arrayList.add("444");
        System.out.println("ArrayList 先进先出;值大小无次序 ");
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
        System.out.println("-----------------------------------------------------------");
        System.out.println("LinkedList 排序测试");
        LinkedList linkedList = new LinkedList();
        linkedList.add("111");
        linkedList.add("333");
        linkedList.add("222");
        linkedList.add("444");
        System.out.println("LinkedList 先进先出;值大小无次序 ");
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
        System.out.println("-----------------------------------------------------------");

3代码结果

放入顺序为:a:111 c:333 b:222 d:444 
HashMap 排序测试
key:a1 value:111
key:d1 value:444
key:c1 value:333
key:b1 value:222
HashMap 进出无次序 ; key大小无次序 
-----------------------------------------------------------
Hashtable 排序测试
key :b value:222
key :a value:111
key :d value:444
key :c value:333
Hashtable 进出无次序 ; key大小无次序 
-----------------------------------------------------------
TreeMap 排序测试
key:a1 value:111
key:b3 value:222
key:c2 value:333
key:d4 value:444
TreeMap 进出无次序 ; key大小从小到大 
-----------------------------------------------------------
LinkedHashMap 排序测试
key:a value:111
key:c value:333
key:b value:222
key:d value:444
LinkedHashMap 先进先出; key大小无次序 
-----------------------------------------------------------
key:a value:111
key:b value:222
key:c value:333
key:d value:444
ConcurrentSkipListMap 进出无次序 ; key大小从小到大  
-----------------------------------------------------------

key:a1 value:111
key:d1 value:444
key:c1 value:333
key:b1 value:222
ConcurrentHashMap 进出无次序 ; key大小无次序  
-----------------------------------------------------------

ArrayList 排序测试
放入顺序为:111 333 222 444
ArrayList 先进先出;值大小无次序 
111
333
222
444
-----------------------------------------------------------
LinkedList 排序测试
LinkedList 先进先出;值大小无次序 
111
333
222
444
-----------------------------------------------------------

 后记:

  • 有的遍历看起来是按自然顺序排列的,有点像是红黑树的结果,但事实是这个可能和编译器的工作原理有关系,你可以在编译一次后,将Map的key值大小修改一下,就会发现再次编译出来的结果是完全没有秩序了。
  • 以上仅为我的个人验证,如有错误,欢迎指出!谢谢

 

 

Java集合框架:分组与排序详解与实践 集合框架是Java中用于存储和操作数据的接口和类的一个集合。它是一个为表示和操作集合而统一设计的API,它包括接口、实现类和算法。集合框架的主要目标是提供一种表示和操作集合的标准方法,同时使得集合的使用更加容易,并降低学习Java编程语言时的难度。List接口是Java集合框架中的一部分,它继承自Collection接口,用于存储有序的集合。List允许有重复的元素,且能够通过索引对元素进行快速访问。在实现上,List通常通过数组或链表的方式存储元素。 阅读详情

相关推荐

别再只会用555了!手把手教你用运放和RC电路搭一个50Hz正弦波信号源(附Multisim仿真文件)

本文详细介绍了如何使用运放LM358和RC电路搭建一个精准的50Hz正弦波信号源,涵盖文氏电桥核心原理、单电源供电解决方案、Multisim仿真及实物调试技巧。通过实战指南和优化建议,帮助电子爱好者快速掌握低频信号生成技术,适用于各种测试和校准场景。

weixin_34116482的博客 367

Java中的有序集合

Java中的有序集合

xiguaxiansheng的博客 6970

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

Java集合教程

Java集合教程

游手好闲 1486

如何用YOLOv5改进无人机小目标检测?MFFSODNet实战教程(附代码)

本文详细介绍了如何利用YOLOv5框架结合MFFSODNet网络结构优化无人机航拍图像中的小目标检测。通过引入微小目标预测头、多尺度特征提取模块(MSFEM)和双向密集特征金字塔网络(BDFPN)等核心技术,显著提升了小目标检测精度。文章提供了完整的代码实现方案,并展示了在农业监测、电力巡检等实际场景中的应用效果。

sre5engineer的博客 740

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 382

java 有序(大小顺序)集合 详解

java 有序(大小顺序)集合 详解

T_Y_F_的博客 2152

手把手教你用Apple Developer App完成苹果开发者账号注册(含证件验证失败解决方案)

本文详细指导如何通过Apple Developer App完成苹果开发者账号注册,特别针对证件验证失败问题提供解决方案。从准备工作到注册流程,再到验证失败的处理方法,帮助开发者顺利完成注册,避免常见错误。

moss5的博客 1160

java中常用的集合

目录 几种常用的集合为什么要用集合List集合Set集合Map集合常见实现类一、HashMap底层实现原理解析Junit架包下载当我们需要操作一些类型相同的数据时,就会想到运用集合了,那为什么不用数组呢?因为Java是面向对象语言,为了操作一些对象,就得把这些对象存储起来,而集合提供的的一些API很方便我们去操作存储的Java对象。 集合的分类 1、Collection:Collection是List、Set、Queue的接口。 2、Iterator:迭代器,主要用来遍历集合。 3、Map:是映射表(键值对

qq_62898618的博客 5092

一文搞懂蚁群算法Ant Colony Optimization(ACO)!!!(灵感起源+数学原理+代码实现+实战应用)

本文系统介绍了蚁群算法的原理与实现。首先从蚂蚁觅食行为出发,阐释了信息素正反馈机制如何引导群体找到最短路径。随后详细解析了算法的数学模型,包括状态转移规则和信息素更新机制。通过MATLAB代码演示了算法在旅行商问题(TSP)中的应用,展示了路径构建和优化的完整流程。最后讨论了算法的优势、局限性和实际应用场景。蚁群算法通过模拟生物智能,为解决复杂优化问题提供了一种高效方法,其核心在于信息素的正反馈机制与随机探索的平衡。

qq_42212808的博客 888

Labview界面多按钮控件的一种处理方法

当界面中存在多个按钮控件时候,此时如果逐个为每个控件添加事件条件则会显得较为麻烦,此处提供了一种对多控件进行批量处理的方法

miracleis的博客 2704

java集合体系——有序集合list

要学习有序集合list之前,首先我们要先知道java集合体系整体架构。集合体系被分为两大类,一是单列集合体系,二是双列集合体系,而今天要讲的有序集合list就属于Collection体系中最重要的一员,Collection体系结构如下图所示:list集合继承了Colleection的所有方法。

duehebfbf的博客 3320

OpenClaw Windows 安装指南

好的,我来一步一步带你在 Windows 上安装 OpenClaw。

m0_60605453的博客 551

JAVA学习历程记录(三)

JAVA学习历程记录(三) 集合Collection 集合中只能存储引用数据类型 常用API Collection <String> collection = new ArrayList<>(); //collection是接口,不能直接实例化 collection.add("123"); //增 collection.clear(); //清除数据

qq_49658603的博客 203

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【从0开始学习Java | 第17篇】集合(中-Set部分)

本文深入讲解Set部分的HashSet,LinkedHashSet和TreeSet

在代码与逻辑的星河里,捡拾技术的微光 1680

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java基础篇——集合

本文介绍了java集合中的List、Set、Map的相关知识,以及它们三者的区别。

尘的学习记录 637

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java集合类程序设计

Java基础案例教程第二版 Java基础程序设计的报告 Java集合类程序设计 设备仪器/软件环境 1.Windows7以上Windows系列操作系统 2.JDK8 3.eclipse 实验(实训)目标 1.掌握Collection以及List集合常用方法的使用。 2.掌握迭代器,增强for循环的使用。 3.掌握List集合和Map集合特点及常用方法的使用。 4.掌握集合遍历的方式。 5.掌握Map集合特点及常用方法的使用。 实验(实训)过程/步骤 实施步骤及相关过程运行效果截图 项目一:库存管理系统

weixin_48864837的博客 1216

set集合(HashSet、LinkedHashSet、TreeSet)

计算元素的哈希值,用于快速定位元素在底层数据结构(如哈希表)中的存储位置。两个相同的元素必须返回相同的哈希值。相同),但额外通过链表记录元素顺序,本质是一个 "Linked HashMap" 的 key 集合。:用于精确比较两个元素是否为 "逻辑上的相同元素"。当两个元素的哈希值相同时,会通过。),否则可能出现逻辑矛盾(如元素被视为不同但排序位置相同)。自定义对象去重的关键:对于自定义类的对象,需。,value 是一个固定的空对象(实例):存储的元素被作为。实例):存储的元素被作为。

weixin_62316729的博客 1344

Java集合逐一讲解

逐一讲解Java集合 集合总体结构图如下: 一、ArrayList集合 1层中最底层只有ArrayList,跟vector比较它是线程不安全的,数组长度增长率为50%,插入删除没有linkedlist快,但是查找速度快,2层为serializable,cloneable和randomaccess都表示标记接口,serializable主要用于序列化,cloneable作用为复制,要注意用的情...

waves6248的博客 380

Java中的集合和实现类

1.集合概述1.1什么是集合?有什么用?数组其实就是一个集合。集合实际上就是一个容器,可以来容纳其他类型的数据。集合为什么说在开发中使用较多?集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有10条纪录,那么假设把这19条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后将10个java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。

m0_74249744的博客 531

Java集合框架是设计模式的一个重要部分,用于组织和操作一组对象

其核心接口如Set(无序不重复元素)、List(有序可重复元素)和Map(关联键值对)都是为了提供高效、易于使用的数据结构来管理对象。这些接口定义了一系列操作方法,如添加、删除、查找和遍历,使得开发者可以方便地实现各种数据操作,而无需关注底层细节。Set主要用于存储一组唯一的元素,如去重、成员关系判断等场景,而List则更适用于维护元素的顺序,比如历史记录、菜单选项列表等。深入研究这些概念时,实践是非常重要的,通过完成练习题和尝试不同的场景应用,可以更好地理解和掌握Java集合框架。

[Blog][Domain] programb.blog.youkuaiyun.com 1196

Java面试系列-Java 集合

我们都知道Java中内存是通过GC自动管理的,GC会在程序运行过程中自动判断哪些对象是可以被回收的,并在合适的时机进行内存释放。GC判断某个对象是否可被回收的依据是,是否有有效的引用指向该对象。如果没有有效引用指向该对象(基本意味着不存在访问该对象的方式),那么该对象就是可回收的。这里的有效引用并不包括弱引用。也就是说,虽然弱引用可以用来访问对象,但进行垃圾回收时弱引用并不会被考虑在内,仅有弱引用指向的对象仍然会被GC回收。

jink104的博客 961

Java各个集合框架之间的区别

List侧重有序可重复、索引访问,ArrayList 适合读操作,LinkedList 适合写操作;Set侧重元素去重,HashSet 高性能、LinkedHashSet 保序、TreeSet 排序;Map侧重键值对存储,HashMap 通用高性能,LinkedHashMap 保序,TreeMap 排序;所有非 JUC 集合均非线程安全,高并发场景优先使用包下的线程安全集合。

2502_92082922的博客 827
上一篇: log4j2的简单使用
下一篇: 并发安全
DRB321
博客等级 码龄12年 4粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值