定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序要求1:属性有姓名、年龄、身高。要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序。(姓名中不要有中文或特殊字符,会涉及到后面的知识)
import java.util.Arrays;
import java.util.Comparator;
/**
* @Auther: AIRMAX 关于排序的练习
* @version: 1.0
*/
public class SortString {//比较规则: 按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序。
public static void main(String[] args) {
//必学例子, 一开始看到有三个数据要排序, 首先想到多维数组, 一维放年龄,二维放身高, 三维放姓名, 一维一维的比过去, 也能完成排序
//看来一开始就想错了, 这三个数据之间是有关系的, 所以应该创个类存这三个数据,这样也方便管理,用引用数据类型的数组就行
String A="123456";
System.out.println("addd".compareTo("ad"));
//1. 创建三个女朋友对象
GirlFriend gf1=new GirlFriend("xiaoshishi", 18 ,1.67);
GirlFriend gf2=new GirlFriend("xiaodandan",19,1.72);
GirlFriend gf3=new GirlFriend("xiaohuihui",19,1.78);
//2. 使用引用类型的数组存储这三个对象
GirlFriend[] arr = {gf1,gf2,gf3};
//3. 利用Arrays类的sort方法排序 匿名内部类方式或lambda的方式
Arrays.sort(arr, new Comparator<GirlFriend>() {
@Override
public int compare(GirlFriend o1, GirlFriend o2) {
if (o1.getAge()==o2.getAge()){//首先判断是否年龄一样, 如果一样就判断是否身高一样
if (o1.getHeight()==o2.getHeight()){
return o1.getName().compareTo(o2.getName());
}
return (int)(o1.getHeight()-o2.getHeight());//年龄一样, 但身高不一样,根据身高就可以排序
}
return o1.getAge()-o2.getAge();//年龄不一样, 直接根据年龄就可以排序
}
});
//lambda表达式写法
/* Arrays.sort(arr,(GirlFriend o1, GirlFriend o2)-> {
if (o1.getAge()==o2.getAge()){//首先判断是否年龄一样, 如果一样就判断是否身高一样
if (o1.getHeight()==o2.getHeight()){
return o1.getName().compareTo(o2.getName());
}
return (int)(o1.getHeight()-o2.getHeight());//年龄一样, 但身高不一样,根据身高就可以排序
}
return o1.getAge()-o2.getAge();//年龄不一样, 直接根据年龄就可以排序
}
);*/
System.out.println(Arrays.toString(arr));
}
}
class GirlFriend{
private String name;
private int age;
private double height;
public GirlFriend() {
}
public GirlFriend(String name, int age, double height) {
this.name = name;
this.age = age;
this.height = height;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return height
*/
public double getHeight() {
return height;
}
/**
* 设置
* @param height
*/
public void setHeight(double height) {
this.height = height;
}
public String toString() {
return "GirlFriend{name = " + name + ", age = " + age + ", height = " + height + "}";
}
}