使用Arrays的sort方法: public static void sort(T[] a, Comparator<? super T> c)
package com.example.jdknewuse;import org.junit.Test;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Comparator;
import static org.junit.Assert.*;/*** 實(shí)現(xiàn):已知一個(gè)person數(shù)組,通過生日進(jìn)行排序,排序規(guī)則為:按照年齡從大到小排列* 使用Arrays的sort方法:* public static <T> void sort(T[] a, Comparator<? super T> c)* Created by liumengbing on 2019/02/19 10:02.*/
public class PersonTest {@Testpublic void personTest() throws Exception{SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");Person[] personArray = new Person[]{new Person(sdf.parse("20050901"),"tom"),new Person(sdf.parse("20010901"),"mary"),new Person(sdf.parse("20060901"),"jack"),new Person(sdf.parse("20020901"),"nick"),new Person(sdf.parse("20040901"),"sarah")};//方法一:使用匿名內(nèi)部類Arrays.sort(personArray, new Comparator<Person>() {@Overridepublic int compare(Person o1, Person o2) {return o1.getBirthday().compareTo(o2.getBirthday());}});System.out.print(Arrays.asList(personArray));//[mary, nick, sarah, tom, jack]//方法二:因?yàn)镃omparator接口是一個(gè)函數(shù)式接口,所以我們可以使用lambda表達(dá)式(未調(diào)用已存在的方法)Arrays.sort(personArray,(o1,o2)->{return o1.getBirthday().compareTo(o2.getBirthday());});System.out.print(Arrays.asList(personArray));//[mary, nick, sarah, tom, jack]//方法三:使用lambda表達(dá)式(使用已存在的compareByAge方法)Arrays.sort(personArray,(o1,o2)->Person.compareByAge(o1,o2));System.out.print(Arrays.asList(personArray));//[mary, nick, sarah, tom, jack]//方法四:因?yàn)檫@個(gè)Lambda表達(dá)式調(diào)用了一個(gè)已存在的方法,因此,我們可以直接使用方法引用來替代這個(gè)Lambda表達(dá)式Arrays.sort(personArray,Person::compareByAge);System.out.print(Arrays.asList(personArray));//[mary, nick, sarah, tom, jack] }
}