Java中Set真的是无序的吗?
我们经常听说List是有序且可重复的,Set是无序且不重复的。这是一个误区,这里所说的顺序有两个概念,一是按照添加的顺序排列,二是按,照自然顺序a-z排列。Set并不是无序的传统所说的Set无序指的是HashSet,它不能保证元素的添加顺序,更不能保证自然顺序,而Set的其他实现类是可以实现这两种顺序的。
1,LinkedHashset : 保证元素添加的自然顺序
2,TreeSet : 保证元素的自然顺序
通过下面一段代码来理解上述问题:
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;public class Prectice {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("String1");set.add("String4");set.add("String3");set.add("String2");set.add("String5");set.forEach(e-> System.out.print(e+" "));System.out.println();//LinkedHashSet会保证元素的添加顺序Set<String> set2 = new LinkedHashSet<>();set2.add("String1");set2.add("String5");set2.add("String3");set2.add("String4");set2.add("String2");set2.forEach(e-> System.out.print(e+" "));System.out.println();//TreeSet保证元素自然顺序Set<String> set3 = new TreeSet<>();set3.add("String1");set3.add("String5");set3.add("String4");set3.add("String2");set3.add("String3");set3.forEach(e-> System.out.print(e+" "));}}
输出结果:
String5 String4 String3 String2 String1 HashSet元素乱序
String1 String5 String3 String4 String2 LinkedHashSet保证元素添加顺序
String1 String2 String3 String4 String5 TreeSet元素按自然顺序排序
Java中Set真的是无序的吗?相关推荐
- java中有序数组比无序数值好_java面向对象的有序数组和无序数组的比较
packageaa;classArray{//定义一个有序数组 private long[] a;//定义数组长度 private intnElems;//构造函数初始化 public Array(i ...
- java linkedlist 查找_Java中LinkedList真的是查找慢增删快
测试结果 废话不多说,先上测试结果.作者分别在ArrayList和LinkedList的头部.尾部和中间三个位置插入与查找100000个元素所消耗的时间来进行对比测试,下面是测试结果 (感谢@Hosa ...
- Java中的List你真的会用吗
转载自 Java中的List你真的会用吗 List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vecto ...
- Java中的BigDecimal类你真的了解吗?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:HikariCP www.jianshu.com/p/c81 ...
- java中 d_Java 中的 syncronized 你真的用对了吗
生活中随处可见并行的例子,并行 顾名思义就是一起进行的意思,同样的程序在某些时候也需要并行来提高效率,在上一篇文章中我们了解了 Java 语言对缓存导致的可见性问题.编译优化导致的顺序性问题的解决方法 ...
- Java中线程池,你真的会用吗
转载自 Java中线程池,你真的会用吗 在<深入源码分析Java线程池的实现原理>这篇文章中,我们介绍过了Java中线程池的常见用法以及基本原理. 在文中有这样一段描述: 可以通过Ex ...
- Java 中的 String 真的是不可变的吗
转载自 Java 中的 String 真的是不可变的吗 我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码. public final class Str ...
- 你真的了解Java中的三目运算符吗
转载自 你真的了解Java中的三目运算符吗 三目运算符是我们经常在代码中使用的,a= (b==null?0:1);这样一行代码可以代替一个if-else,可以使代码变得清爽易读. 但是,三目运算符也是 ...
- [转载] Java内存管理-你真的理解Java中的数据类型吗(十)
参考链接: Java中的字符串类String 1 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 推荐阅读 第一季 0.Java的线程安全.单例模式.JVM内存结构等知识 ...
最新文章
- 如果你只做自己能力范围内的事,那么你永远没法进步
- Redhat7修改默认运行级别方法
- 测试思想-好东西与大家分享-1
- python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
- 升级ASP.Net Core项目
- jhipster_JHipster入门,第2部分
- php 全局变量能定义数组吗,php数组声明、遍历、数组全局变量使用小结
- 鸿蒙眼镜怎么样,Babiators儿童太阳镜怎么样 Babiators儿童太阳镜测评
- UVM入坑系列笔记(一)
- 密钥怎么存储在数据库中
- 51nod-1337:翻转游戏
- ios入门之消息推送详解
- minecraftjava版光追_《我的世界》加入光追,“马赛克”游戏真有必要这样做?...
- mac 中用到的svn命令 持续更新
- 支持hicar的华为手机
- linux系统刷机教程,在 Linux 刷 BIOS
- 9. 面向对象基础(下)
- Windows XP Service Pack 3 修复程序列表
- PPT之ppt动画的基本设置
- SpringBoot多表联查
热门文章
- Redis设计与实现之压缩列表
- 前端开发:JS中时间戳和时间之间的转换
- Android APP适配全面屏手机的技术要点
- css文字在div中,[html][css]让文字在div中居中的方法[转]
- DetailView ListView
- Linux- 初识man、info
- 科普:ERP和CRM、MRP、PLM、APS、MES、WMS、SRM的关系
- 彻底颠覆护理室:BeautyHealth在欧洲和亚洲推出海菲秀 Syndeo智能数字化物联仪器
- cmd中查看python安装路径
- python脚本查找txt文本中指定文字及上下文