对Person类年龄的排序问题

对Person类年龄的排序问题

方法一:对person类进行接口Comparable的实现

// An highlighted block
	public class Person implements Comparable<Person>{
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {

        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Person o){
        return this.getAge()-o.getAge();
    }
}

以上代码重写了compareTo方法,以下:

// An highlighted block
@Override
    public int compareTo(Person o){
        return this.getAge()-o.getAge();
    }
//此处定义一个Person的集合arr,接收Person
ArrayList<Person> arr = new ArrayList<>();

这样可以直接使用**Collections.sort(arr)**对集合进行排序。

方法二:重写Comparator接口

// An highlighted block

//还是沿用上边的Person类,只是此处不再实现接口,故不重写**compareTo**

import java.util.Arrays;
import java.util.Comparator;

public class DemoLambda {
    public static void main(String[] args) {
        Person[] persons = {new Person("张三",28),new Person("李四",21),new Person("王五",45),new Person("王二",40)};
        //对Comparator接口进行匿名内部类重写,重写compare方法
        Arrays.sort(persons, new Comparator<Person>() {		
        
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge()-o2.getAge();
            }
        });
//        Arrays.sort(persons,((Person o1, Person o2) -> {return o1.getAge()-o2.getAge();}));	//此处使用的Lambda表达式
//        Arrays.sort(persons);
//        for (Person person : persons) {
//            System.out.println(person.toString());
//        }
    }
}

核心代码

//An highlighted block
 Arrays.sort(persons, new Comparator<Person>() {		
        
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge()-o2.getAge();
            }
        });

为了更简便,可以使用Lambda传参给Comparator接口,代码如下

Arrays.sort(persons,((Person o1,Person o2)->{
	return o1.getAge()-o2.getAge();
	}))

为了更更简便,可以使用省略后的Lambda,代码如下

Arrays.sort(persons,((o1,o2)->o1.getAge()-o2.getAge()))

第一次写博客,本人小白,轻喷
[1]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
[2]: https://mermaidjs.github.io/
[3]: https://mermaidjs.github.io/
[4]: http://adrai.github.io/flowchart.js/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值