全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java 从Set里面取出有序的记录详解及实例

Java 从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>(); 
    for (int i = 0; i < 10; i++) { 
      User user = new User((i + 1), "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>(); 
    for (int i = 0; i < 10; i++) { 
      User2 user = new User2((i + 1), "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() { 
    final int prime = 31; 
    int result = 1; 
    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() { 
    final int prime = 31; 
    int result = 1; 
    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) 
      return 1; 
    if (id > user.getId()) 
      return 1; 
    else if (id == user.getId()) 
      return 0; 
    else  
      return -1; 
  } 
 
} 

运行结果:

-----------------HashSet Start------------------ 
 id = 3,  
 username = uname3,  
 password = pswd3 
 id = 4,  
 username = uname4,  
 password = pswd4 
 id = 1,  
 username = uname1,  
 password = pswd1 
 id = 2,  
 username = uname2,  
 password = pswd2 
 id = 7,  
 username = uname7,  
 password = pswd7 
 id = 8,  
 username = uname8,  
 password = pswd8 
 id = 5,  
 username = uname5,  
 password = pswd5 
 id = 6,  
 username = uname6,  
 password = pswd6 
 id = 9,  
 username = uname9,  
 password = pswd9 
 id = 10,  
 username = uname10,  
 password = pswd10 
------------------HashSet End---------------------- 
-----------------TreeSet Start------------------ 
 id = 1,  
 username = uname1,  
 password = pswd1 
 id = 2,  
 username = uname2,  
 password = pswd2 
 id = 3,  
 username = uname3,  
 password = pswd3 
 id = 4,  
 username = uname4,  
 password = pswd4 
 id = 5,  
 username = uname5,  
 password = pswd5 
 id = 6,  
 username = uname6,  
 password = pswd6 
 id = 7,  
 username = uname7,  
 password = pswd7 
 id = 8,  
 username = uname8,  
 password = pswd8 
 id = 9,  
 username = uname9,  
 password = pswd9 
 id = 10,  
 username = uname10,  
 password = pswd10 
------------------TreeSet End---------------------- 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # Set取值  # 从Set中有序取值  # Java基础之集合Set详解  # Java Set集合去重的原理及实现  # Java 容器类源码详解 Set  # Java Set简介_动力节点Java学院整理  # Java集合之Set接口及其实现类精解  # 拿出来  # 实现了  # 就会  # 希望能  # 就得  # 并对  # 时就  # 报错  # 谢谢大家  # 排在  # 就可以  # 而不是  # 然后又  # uname  # user  # int 


相关文章: 如何访问已购建站主机并解决登录问题?  手机网站制作与建设方案,手机网站如何建设?  网站制作免费,什么网站能看正片电影?  如何通过西部建站助手安装IIS服务器?  平台云上自主建站:模板化设计与智能工具打造高效网站  高端网站建设与定制开发一站式解决方案 中企动力  专业公司网站制作公司,用什么语言做企业网站比较好?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  html制作网站的步骤有哪些,iapp如何添加网页?  如何用PHP快速搭建高效网站?分步指南  网站制作的步骤包括,正确网址格式怎么写?  如何快速搭建支持数据库操作的智能建站平台?  如何快速搭建自助建站会员专属系统?  如何解决VPS建站LNMP环境配置常见问题?  Swift中循环语句中的转移语句 break 和 continue  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何通过老薛主机一键快速建站?  宁波自助建站系统如何快速打造专业企业网站?  如何在阿里云部署织梦网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何登录建站主机?访问步骤全解析  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何续费美橙建站之星域名及服务?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  沈阳制作网站公司排名,沈阳装饰协会官方网站?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  如何在宝塔面板中创建新站点?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  h5网站制作工具有哪些,h5页面制作工具有哪些?  如何高效生成建站之星成品网站源码?  网站制作服务平台,有什么网站可以发布本地服务信息?  制作网站的公司有哪些,做一个公司网站要多少钱?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  济南企业网站制作公司,济南社保单位网上缴费步骤?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  无锡营销型网站制作公司,无锡网选车牌流程?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  香港服务器租用每月最低只需15元?  如何正确下载安装西数主机建站助手?  建站之星2.7模板快速切换与批量管理功能操作指南  Swift中swift中的switch 语句  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何在Tomcat中配置并部署网站项目?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  香港服务器WordPress建站指南:SEO优化与高效部署策略  建站主机系统SEO优化与智能配置核心关键词操作指南  北京的网站制作公司有哪些,哪个视频网站最好?  中山网站制作网页,中山新生登记系统登记流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。