无序的有重复数据的list变成有序的无重复数据的list
2016-03-11 11:43
302 查看
将会遇到的问题:
1、set是不重复的,但是new出来的数据是否能保证不重复?
2、hashset为什么会自动排序呢?
说明:list是有序的(是指的保留其初始化的顺序),不代表初始化是有序的
示例:
1、 首先创建一个无序有重复数据的list
list内容打印出来为:1 5 8 9 2 4 6 5 7 3 3 3 1 1,
说明:其中最后两个1是new出来的
2、 将list转化为set,
a、list的顺序消失
b、list的数据缺损,剔除重复的数据
c、set有三种方式:hashset无序;treeset自动按照从小到大排序,不保留list的顺序;linkedhashset会保留list的顺序
set内容打印出来为:
TreeSet打印内容为:[1, 2, 3, 4, 5, 6, 7, 8, 9]//正序
LinkedHashSet打印内容为:[1, 5, 8, 9, 2, 4, 6, 7, 3]//保留list的顺序
set详解:在java语言中,提供多种不同的结构来组织对象,Set(集合)是其中的一种,本身是一个接口,其迭代时的顺序取决于其具体实现。
典型的实现包括:
HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放;
LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代;
TreeSet:提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快。
3、 将set转化为list
注:需先清空list,不然下次把set元素加入此list的时候是在原来的基础上追加元素的
解决问题:
1、set是不重复的,但是new出来的数据是否能保证不重复
a)用整数Integer尝试,set可以将重复数据剔除,即使是new出来的数据也能保证不重复
b)用字符串去尝试:set可以将重复数据剔除,即使是new出来的数据也能保证不重复
2、hashset自动排序的表象:
这样并不是按照Set内容进行排序的,他们的顺序取决于hashCode,只是Integer的hashCode刚刚好用的是Integer的value,结果看起来就过排序了。如果是其他hashCode计算方式就不一定了。
1、set是不重复的,但是new出来的数据是否能保证不重复?
2、hashset为什么会自动排序呢?
说明:list是有序的(是指的保留其初始化的顺序),不代表初始化是有序的
示例:
1、 首先创建一个无序有重复数据的list
list内容打印出来为:1 5 8 9 2 4 6 5 7 3 3 3 1 1,
说明:其中最后两个1是new出来的
2、 将list转化为set,
a、list的顺序消失
b、list的数据缺损,剔除重复的数据
c、set有三种方式:hashset无序;treeset自动按照从小到大排序,不保留list的顺序;linkedhashset会保留list的顺序
set内容打印出来为:
Set set = new HashSet(); set.addAll(list);HashSet打印内容为:[1, 2, 3, 4, 5, 6, 7, 8, 9]
TreeSet打印内容为:[1, 2, 3, 4, 5, 6, 7, 8, 9]//正序
LinkedHashSet打印内容为:[1, 5, 8, 9, 2, 4, 6, 7, 3]//保留list的顺序
set详解:在java语言中,提供多种不同的结构来组织对象,Set(集合)是其中的一种,本身是一个接口,其迭代时的顺序取决于其具体实现。
典型的实现包括:
HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放;
LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代;
TreeSet:提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快。
3、 将set转化为list
注:需先清空list,不然下次把set元素加入此list的时候是在原来的基础上追加元素的
解决问题:
1、set是不重复的,但是new出来的数据是否能保证不重复
a)用整数Integer尝试,set可以将重复数据剔除,即使是new出来的数据也能保证不重复
b)用字符串去尝试:set可以将重复数据剔除,即使是new出来的数据也能保证不重复
2、hashset自动排序的表象:
这样并不是按照Set内容进行排序的,他们的顺序取决于hashCode,只是Integer的hashCode刚刚好用的是Integer的value,结果看起来就过排序了。如果是其他hashCode计算方式就不一定了。
相关文章推荐
- 库出错啦
- SQL Server Version
- iOS UIAlertController 使用介绍
- 60天备战省赛1——生成函数
- sudo -i 免密码 sudo -i 使用不了
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- [转]移动端HTML5<video>视频播放优化实践
- c++第二次实验(循环题)
- Oracle触发器用法实例详解
- JAVA线程同步中的notify和wait()函数
- JavaScript——innerHTML作用
- c++第二次上机-1
- ExtJS4中GridPanel组件简单例子
- 将博客搬至CSDN
- python之路-socket进阶篇,多线程、多进程
- ES6语法篇(其一)
- Java中系统属性Properties介绍 System.getProperty()参数大全
- java简单实现webservice接口
- RxJava
- 链表删除插入操作