从Set里面取出有序的记录
Set里面的记录是无序的。假设想使用Set,然后又想里面的记录是有序的,就能够使用TreeSet。而不是HashSet。在使用TreeSet的时候,里面的元素必须是实现了Comparable接口的,TreeSet在进行排序的时候就是通过比較它们的Comparable接口的实现。
以下是HashSet的无序和TreeSet的有序的比較:
Test类:
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.Set;
- import java.util.TreeSet;
- public class Test {
- public static void main(String args[]) {
- useHashSet();
- useTreeSet();
- }
- /**
- * Set默认是无序的。一般从Set里面拿出来的数据每次的顺序都会是不一样的,假设想里面的顺序一样
- * 就使用TreeSet
- */
- public static void useHashSet() {
- System.out.println("-----------------HashSet Start------------------");
- Set<User> set = new HashSet<User>();
- ; i < 10; i++) {
- ), "uname" + (i + 1), "pswd" + (i + 1));
- set.add(user);
- }
- Iterator<User> iter = set.iterator();
- while (iter.hasNext())
- System.out.println(iter.next());
- System.out.println("------------------HashSet End----------------------");
- }
- /**
- * TreeSet是有序的。TreeSet在给里面的元素排序是通过它们的Comparable接口的实现来比較的,所以,
- * 假设里面的对象没有实现Comparable接口,则TreeSet在执行时就会报错,所以假设想从Set里面拿出来的数据是
- * 有序的就得使里面的对象实现Comparable接口,User2是实现了Comparable接口的,并对它们的id进行比較。id大
- * 的就会排在后面
- */
- public static void useTreeSet() {
- System.out.println("-----------------TreeSet Start------------------");
- Set<User2> set = new TreeSet<User2>();
- ; i < 10; i++) {
- ), "uname" + (i + 1), "pswd" + (i + 1));
- set.add(user);
- }
- Iterator<User2> iter = set.iterator();
- while (iter.hasNext())
- System.out.println(iter.next());
- System.out.println("------------------TreeSet End----------------------");
- }
- }
User类:
- public class User {
- private int id;
- private String username;
- private String password;
- public User() {
- }
- public User(int id, String username, String password) {
- this.id = id;
- this.username = username;
- this.password = password;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public int hashCode() {
- ;
- ;
- result = prime * result + id;
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- User other = (User) obj;
- if (id != other.id)
- return false;
- return true;
- }
- @Override
- public String toString() {
- return " id = " + id + ", \r\n username = " + username
- + ", \r\n password = " + password;
- }
- }
User2类:
- public class User2 implements Comparable<User2> {
- private int id;
- private String username;
- private String password;
- public User2() {
- }
- public User2(int id, String username, String password) {
- this.id = id;
- this.username = username;
- this.password = password;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public int hashCode() {
- ;
- ;
- result = prime * result + id;
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- User2 other = (User2) obj;
- if (id != other.id)
- return false;
- return true;
- }
- @Override
- public String toString() {
- return " id = " + id + ", \r\n username = " + username
- + ", \r\n password = " + password;
- }
- @Override
- public int compareTo(User2 user) {
- // TODO Auto-generated method stub
- //这里我的实现是依照id进行排序
- if (user == null)
- ;
- if (id > user.getId())
- ;
- else if (id == user.getId())
- ;
- else
- ;
- }
- }
执行结果:
- -----------------HashSet Start------------------
- ,
- username = uname3,
- password = pswd3
- ,
- username = uname4,
- password = pswd4
- ,
- username = uname1,
- password = pswd1
- ,
- username = uname2,
- password = pswd2
- ,
- username = uname7,
- password = pswd7
- ,
- username = uname8,
- password = pswd8
- ,
- username = uname5,
- password = pswd5
- ,
- username = uname6,
- password = pswd6
- ,
- username = uname9,
- password = pswd9
- ,
- username = uname10,
- password = pswd10
- ------------------HashSet End----------------------
- -----------------TreeSet Start------------------
- ,
- username = uname1,
- password = pswd1
- ,
- username = uname2,
- password = pswd2
- ,
- username = uname3,
- password = pswd3
- ,
- username = uname4,
- password = pswd4
- ,
- username = uname5,
- password = pswd5
- ,
- username = uname6,
- password = pswd6
- ,
- username = uname7,
- password = pswd7
- ,
- username = uname8,
- password = pswd8
- ,
- username = uname9,
- password = pswd9
- ,
- username = uname10,
- password = pswd10
- ------------------TreeSet End----------------------
从Set里面取出有序的记录的更多相关文章
- [Spark][Python]DataFrame中取出有限个记录的例子
[Spark][Python]DataFrame中取出有限个记录的例子: sqlContext = HiveContext(sc) peopleDF = sqlContext.read.json(&q ...
- 从mysql数据表中随机取出一条记录
核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...
- LinkedHashMap唯一,存储取出有序
package cn.itcast_03; import java.util.LinkedHashMap; import java.util.Set; /* * LinkedHashMap:是Map接 ...
- LinkedHashSet 元素唯一,存储取出有序
package cn.itcast_04; import java.util.LinkedHashSet; /* * LinkedHashSet:底层数据结构由哈希表和链表组成. * 哈希表保证元 ...
- sql server数据库查询取出重复数据记录
问题:博主在2011年6月,广东技术师范大学大四的时候,从学校计算机科学学院网站看到招聘信息并到广东中原地产IT部面试,很清楚记得当时的面试题目:怎么从数据库里面查询重复记录. 解决方案:在sql s ...
- Java遇见HTML——JSP篇之商品浏览记录的实现
一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ...
- PHP如何实现在数据库随机获取几条记录
本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法.PHP实例分享给大家供大家参考,具体如下: 为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法 ...
- MySQL--详细查询操作(单表记录查询、多表记录查询(连表查询)、子查询)
一.单表查询 1.完整的语法顺序(可以不写完整,其次顺序要对) (不分组,且当前表使用聚合函数: 当前表为一组,显示统计结果 ) select distinct [*,查询字段1,查询字段2,表达式, ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
随机推荐
- linux 下find---xargs以及find--- -exec结合使用
例:删除/home/raven下,包括子目录里所有名为abc.txt的文件: find /home/raven -name abc.txt | xargs rm -rf 如果不使用xargs,则为: ...
- Dcloud课程9 天气小助手如何实现
Dcloud课程9 天气小助手如何实现 一.总结 一句话总结:调用天气的接口,如果网上找不到好用的,而如果仅仅是测试,那就自己写一个简单的接口就可以了. 1.dcloud中的css样式怎么调? 和网页 ...
- InstallShield详细制作说明(三)
八.许可协议 打开[Installation Designer]->[Behavior and Logic]->[Support Files/Billboards]面板 这里[Langua ...
- buildroot使用
buildroot是一套自动化构建工具,比yocto简单. 项目地址:http://www.buildroot.org/ 培训资料地址:http://free-electrons.com/ 附带lin ...
- bzoj3786星系探索(splay维护dfs序)
Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球 ...
- CentOS 7最小化安装图解
一.环境介绍: win10 x64安装VMware® Workstation 14 Pro(版本:14.1.2 build-8497320) 二.安装CentOS 1.新建虚拟机 打开虚拟机,主页,创 ...
- 多线程中的"断点"续传《notify()和wait()》
眼下在做一个项目.关于软件管理与下载的,预计项目提交日期定在6月9号.项目做了有20天了,可是在一个功能上卡住了.在这个项目中有一个功能----APK的下载须要实现. 相信大家都玩过非常多关于下载AP ...
- ubuntu-软件解压方法(转载)
一下内容转载自 http://blog.csdn.net/zad522/article/details/2770446 今天用到了ubuntu解压,所以就在网上查找了下方法.自己菜鸟一枚,收录别人的文 ...
- ActivityChooserView-如何隐藏选择的应用图标
今天在修改一个问题的时候,用到了ActivityChooserView类,但是,这个类会自动显示两个按钮,一个是点击有下拉框的,一个是选择应用以后,显示应用图标的.因为应用图标跟当时的环境非常的不搭, ...
- caffe 在 windows 下的配置(scripts\build_win.cmd)
官网配置文档见:GitHub - BVLC/caffe at windows 1. windows 设置 requirements: visual studio 2013/2015 CMake > ...