java 大小相间排序_java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序)...

如果List中Object实现了Comparator接口,便可以直接用以下的方式对List进行排序 如List list,通过list.add("abc")等操作为list添加了一些元素,通过以下代码即可完成排序: Collections.sort(list) 由于使用了默认的排序规则,所以sort只传

//一个POJO例子

public class User {

private int age;

private String name;

public User(String name,int age){

this.name=name;

this.age=age;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

//具体的比较类,实现Comparator接口

public class ComparatoUser implements Comparator {

public int compare(Object arg0, Object arg1) {

User user0=(User)arg0;

User user1=(User)arg1;

//     首先比较年龄,如果年龄相同,则比较名字

int flag=user0.getAge()-(user1.getAge());

if(flag==0){

return user0.getName().compareTo(user1.getName());

}else{

return flag;

}

}

}

//测试类

public class TestUser {

public static void main(String[] args){

List list=new ArrayList();

list.add(new User("aa",12));

list.add(new User("dd",888));

list.add(new User("ff",123));

list.add(new User("cc",123));

list.add(new User("bb",142));

list.add(new User("ww",126));

主要看看拿的那个对象

ComparatoUser com=new ComparatoUser();

Collections.sort(list, com);

for(int i=0;i

User u=(User)list.get(i);

System.out.print(u.getAge()+"/");

System.out.println(u.getName());

}

}

}

用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable{ private String name; private Integer order; public String getN

//&&&&&&&&&&&&&&&&&&&&&      上面和下面的方法实现功能是一样的,注意观察不同点

pojo

public class User implements Comparator {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int compare(User o1, User o2) {

if(o1.getAge()-(o2.getAge())!=0){

return o1.getAge()-(o2.getAge());

}else{

return  o1.getName().compareTo(o2.getName());

}

}

}

测试类

public class Test {

public static void main(String[] args){

User u1=new User();

u1.setAge(13);

u1.setName("d");

User u2=new User();

u2.setAge(6);

u2.setName("h");

User u3=new User();

u3.setAge(3);

u3.setName("a");

User u4=new User();

u4.setAge(23);

u4.setName("c");

List al=new ArrayList();

al.add(u1);

al.add(u2);

al.add(u3);

al.add(u4);

//主要观察里面的对象new User();和上面的实现有什么不同

Collections.sort(al,new User());

Iterator ite=al.iterator();

while(ite.hasNext()){

User user=(User)ite.next();

System.out.print(user.getAge()+"/");

System.out.println(user.getName());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值