Lambda + Arrays---小练习

张开发
2026/4/19 7:45:18 15 分钟阅读

分享文章

Lambda + Arrays---小练习
题目按照要求进行排序定义数组并存储一些学生对象利用 Arrays 中的 sort 方法进行排序要求 1属性有姓名、年龄、身高。要求 2按照年龄的大小进行排序年龄一样按照身高排序身高一样按照姓名的字母进行排序。思路利用之前提到的Arrays.sort底层逻辑来实现排序自定义对象数组的多级排序按照年龄、身高、姓名依次排序注意在sort方法中o1-o2是升序、o2-o1是降序因为sort底层逻辑是插入排序二分查找拿未排序数组的元素和已排序数组的元素进行比较若o1-o2是正数表示当前插入元素是大的放在已排好序数组元素的后面0表示插入元素和现在比是一样的也放在后面负数表示当前插入元素是小的放在前面代码这里给大家写了两种方式匿名内部类、Lambda对象类public class Student { private String name; private int age; private double height; public Student() { } public Student(String name, int age, double height) { this.name name; this.age age; this.height height; } 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 double getHeight() { return height; } public void setHeight(double height) { this.height height; } Override public String toString() { return Student{ name name \ , age age , height height }; } }实现类import java.util.Arrays; import java.util.Comparator; public class test1 { public static void main(String[] args) { //compareTo方法来比较字符串大小 Student gf1new Student(z,18,1.68); Student gf2new Student(y,18,1.69); Student gf3new Student(l,19,1.70); Student[] arr{gf1,gf2,gf3}; Arrays.sort(arr, new ComparatorStudent() { Override public int compare(Student o1, Student o2) { //按照年龄大小排序年龄一样按身高排序身高一样按照姓名的字母排序 double tempo1.getAge()- o2.getAge(); temptemp0?o1.getHeight()-o2.getHeight():temp; temptemp0?o1.getName().compareTo(o2.getName()):temp; if(temp0){ return 1; }else if(temp0){ return -1; }else{ return 0; } } }); //Lambda表达式 Arrays.sort(arr, (Student o1, Student o2)-{ //按照年龄大小排序年龄一样按身高排序身高一样按照姓名的字母排序 double tempo1.getAge()- o2.getAge(); temptemp0?o1.getHeight()-o2.getHeight():temp; temptemp0?o1.getName().compareTo(o2.getName()):temp; if(temp0){ return 1; }else if(temp0){ return -1; }else{ return 0; } } ); //Lambda极简表达式 Arrays.sort(arr, ( o1, o2)-{ //按照年龄大小排序年龄一样按身高排序身高一样按照姓名的字母排序 double tempo1.getAge()- o2.getAge(); temptemp0?o1.getHeight()-o2.getHeight():temp; temptemp0?o1.getName().compareTo(o2.getName()):temp; if(temp0){ return 1; }else if(temp0){ return -1; }else{ return 0; } } ); System.out.println(Arrays.toString(arr)); } }

更多文章