对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/