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

  

<强> Java从组里面取出有序的记录详解及实例

  

设置里面的记录是无序的,如果想使用,然后又想里面的记录是有序的,就可以使TreeSet用(而不是HashSet,在使用TreeSet的时候,里面的元素必须是实现了可比接口的,TreeSet在进行排序的时候就是通过比较它们的可比接口的实现!,
  

  

下面是HashSet的无序和TreeSet的有序的比较:,

  

<强>测试类: <强>
  

        进口java.util.HashSet;   进口java.util.Iterator;   进口java.util.Set;   进口java.util.TreeSet;      公共类测试{      公共静态void main (String参数[]){      useHashSet ();   useTreeSet ();      }/* *   *设置默认是无序的,一般从组里面拿出来的数据每次的顺序都会是不一样的,如果想里面的顺序一样   *就使用TreeSet   */公共静态孔隙useHashSet () {   system . out。println (“- - - - - - - - - - - - - - - - - hashset开始- - - - - - - - - - - - - - - - - -”);   Set设置=new HashSet ();   for (int i=0;我& lt;10;我+ +){   用户用户=新用户((i + 1),“uname " + (i + 1),“pswd”+ (i + 1));   set.add(用户);   }   Iteratoriter=set.iterator ();   而(iter.hasNext ())   System.out.println (iter.next ());   system . out。println (“- - - - - - - - - - - - - - - - - - HashSet结束- - - - - - - - - - - - - - - - - - - - - - -”);   }/* *   * TreeSet是有序的,TreeSet在给里面的元素排序是通过它们的可比接口的实现来比较的,所以,   *如果里面的对象没有实现可比接口,则TreeSet在运行时就会报错,所以如果想从组里面拿出来的数据是   *有序的就得使里面的对象实现可比接口,User2是实现了可比接口的,并对它们的身份证进行比较,id大   *的就会排在后面   */公共静态孔隙useTreeSet () {   system . out。println (“- - - - - - - - - - - - - - - - - treeset开始- - - - - - - - - - - - - - - - - -”);   Set设置=new TreeSet ();   for (int i=0;我& lt;10;我+ +){   User2用户=new User2 ((i + 1),“uname " + (i + 1),“pswd”+ (i + 1));   set.add(用户);   }   Iteratoriter=set.iterator ();   而(iter.hasNext ())   System.out.println (iter.next ());   system . out。println (“- - - - - - - - - - - - - - - - - - TreeSet结束- - - - - - - - - - - - - - - - - - - - - - -”);   }      }   之前      

<>强,用户类:
  

        公开课用户{      私人int id;   私人字符串的用户名;   私人密码字符串;      公共用户(){   }      公共用户(int id、用户名的字符串,字符串密码){   这一点。id=id;   这一点。用户名=用户名;   这一点。密码=密码;   }      公共int getId () {   返回id;   }      公共空间setId (int id) {   这一点。id=id;   }      公共字符串getUsername () {   返回用户名;   }      公共空间setUsername(字符串的用户名){   这一点。用户名=用户名;   }      公共字符串getPassword () {   返回密码;   }      公共空间向setPassword(字符串密码){   这一点。密码=密码;   }      @Override   公共int hashCode () {   最后一个int '=31;   int结果=1;   结果+ id=' *结果;   返回结果;   }      @Override   公共布尔=(对象obj) {   如果(这==obj)   返回true;   如果(obj==null)   返回错误;   如果(getClass () !=obj.getClass ())   返回错误;   其他用户=(用户)obj;   如果(id !=other.id)   返回错误;   返回true;   }      @Override   公共字符串toString () {   返回" id=" +身份证+”,\ r \ n用户名=" +用户名   + ",\ r \ n密码=" +密码;   }      }   之前      

<强> User2类:
  

        公共类User2实现Comparable{      私人int id;   私人字符串的用户名;   私人密码字符串;      公共User2 () {   }      公共User2 (int id、用户名的字符串,字符串密码){   这一点。id=id;   这一点。用户名=用户名;   这一点。密码=密码;   }      公共int getId () {   返回id;   }      公共空间setId (int id) {   这一点。id=id;   }      公共字符串getUsername () {   返回用户名;   }      公共空间setUsername(字符串的用户名){   这一点。用户名=用户名;   }      公共字符串getPassword () {   返回密码;   }      公共空间向setPassword(字符串密码){   这一点。密码=密码;   }      @Override   公共int hashCode () {   最后一个int '=31;   int结果=1;   结果+ id=' *结果;   返回结果;   }      @Override   公共布尔=(对象obj) {   如果(这==obj)   返回true;   如果(obj==null)   返回错误;   如果(getClass () !=obj.getClass ())   返回错误;   User2其他=(User2) obj;   如果(id !=other.id)   返回错误;   返回true;   }      @Override   公共字符串toString () {   返回" id=" +身份证+”,\ r \ n用户名=" +用户名   + ",\ r \ n密码=" +密码;   }      @Override   公共int compareTo (User2用户){//TODO自动生成方法存根//这里我的实现是按照身份证进行排序   如果(用户==null)   返回1;   如果(id祝辞user.getId ())   返回1;   else if (id==user.getId ())   返回0;   其他的   返回1;   }      }   

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