<强> 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(用户); } Iterator iter=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(用户); } Iterator iter=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从组里面取出有序的记录详解及实例