集列表合中的对象如何实现按属性大小排的序

  介绍

本篇文章为大家展示了集列表合中的对象如何实现按属性大小排的序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>

包com.huad.luck;
  
  进口java.util.ArrayList;
  进口java.util.Collections;
  进口java.util.Comparator;
  进口并不知道;
  
  公共类测试{
  公共静态void main (String [] args) {
  人p=new ();
  p.setName (“tom");
  p.setAge (11);
  人p1=new ();
  p1.setName (“lilei");
  p1.setAge (19);
  人p2=new ();
  p2.setName (“json");
  p2.setAge (15);
  List列表=new ArrayList ();
  list.add (p);
  list.add (p1);
  list.add (p2);
  集合。排序(列表,新Comparator () {//这里可以再人中实现Comparator接口,重写比较方法
  @Override
  公共int比较(人o1、o2) {//这里按照名字排序
  返回o1.getName () .compareTo (o2.getName ());//这里按年龄排照序//返回(o1.getAge () +““) .compareTo (o2.getAge () +““);//莶煌粜灾蹬判?
  }
  
  });
  for (int i=0;我& lt;list.size ();我+ +){
  System.out.println (list.get (i) . getname ());
  }
  }
  }//类的人
  包com.huad.luck;
  
  公共类人{
  私人字符串名称;
  私人int年龄;
  
  公众人物(字符串名称,int年龄){
  this.name=名称;
  这一点。年龄=年龄;
  }
  公众人物(){
  }
  公共字符串getName () {
  返回名称;
  }
  公共空间setName(字符串名称){
  this.name=名称;
  }
  公共int getAge () {
  返回年龄;
  }
  公共空间setAge (int年龄){
  这一点。年龄=年龄;
  }
  
  }
  & lt; p祝辞& lt;跨度比用collection.sort()方法对集列表合排序& lt;/span> & lt; br/祝辞& lt;/p> & lt; p祝辞& lt;跨度祝辞& lt;跨度祝辞& lt;/span> & lt;/span> & lt;/p> & lt; p在第一种是列表中的对象实现可比接口,如下:& lt;跨度比;& lt;/span> & lt;/p> & lt;前类=癹ava"祝辞/* *
  *根据对用户排序
  */公开课用户实现Comparable 

<>强测试一下:

{公共类测试
  公共静态void main (String [] args) {
  用户user1=新用户();
  user1.setName (“a");
  user1.setOrder (1);
  用户user2=新用户();
  user2.setName (“b");
  user2.setOrder (2);
  List列表=new ArrayList ();//此处添加user2再添加user1
  list.add (user2);
  list.add (user1);
  Collections.sort(列表);
  (用户u:列表){
  System.out.println (u.getName ());
  }
  }
  }

输出结果如下

a

/* *   *根据对用户排序   */公开课用户{//此处无需实现可比接口   私人字符串名称;   私人整数阶;   公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   公共整数getOrder () {   返回订单;   }   公共空间setOrder(整数阶){   这一点。订单=订单;   }   }

主类中这样写即可:

{公共类测试
  公共静态void main (String [] args) {
  用户user1=新用户();
  user1.setName (“a");
  user1.setOrder (1);
  用户user2=新用户();
  user2.setName (“b");
  user2.setOrder (2);
  List列表=new ArrayList ();
  list.add (user2);
  list.add (user1);
  
  集合。排序(列表,新Comparator () {
  公共int比较(用户arg0,用户__arg1) {
  返回arg0.getOrder () .compareTo (arg1.getOrder ());
  }
  });
  (用户u:列表){
  System.out.println (u.getName ());
  }
  }
  }

输出结果如下

a

前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁

多字段的场合:

Collections.sort(列表,new  Comparator< User> () {,      public  int 比较(User  arg0, User  __arg1), {,//,第一次比较专业,      int 小姐:=,arg0.getOrder () .compareTo (arg1.getOrder ());//,如果专业相同则进行第二次比较,      如果(i==0) {,//,第二次比较,      int  j=arg0.getXXX () .compareTo (arg1.getXXX ()),,//,如果学制相同则返回按年龄排序,      如果(j==0) {,      return  arg0.getCCC () .compareTo (arg1.getCCC ()),,      },      return  j,      },      return 我,      },      });

集列表合中的对象如何实现按属性大小排的序