(1)java8初體驗

來源:互聯網
上載者:User

標籤:直接   一行代碼   cti   版本   -name   type   排列   實現   ram   

很多部落格都拿Comparator,我也貼一下吧。

java8以前的匿名內部類用來排序。

 

//匿名內部類@Testpublic void java8Test() {    Person p1 = new Person(22);    Person p2 = new Person(23);    Person p3 = new Person(21);    Person p4 = new Person(20);    List<Person> list = Lists.newArrayList(p1, p2, p3, p4);    Collections.sort(list, new Comparator<Person>() {        @Override        public int compare(Person o1, Person o2) {            //兩個數判斷大小不要直接相減,如果減一個負數得到的值可能會超出範圍,從而返回負數            return Ints.compare(o1.getAge(), o2.getAge());//guava提供的方法        }    });    System.out.println(list);//業務代碼千萬不要用}//java8@Testpublic void java8Test() {    Person p1 = new Person(22);    Person p2 = new Person(23);    Person p3 = new Person(21);    Person p4 = new Person(20);    List<Person> list = Lists.newArrayList(p1, p2, p3, p4);    Collections.sort(list, Comparator.comparing(Person::getAge));    System.out.println(list);//業務代碼千萬不要用}

顯而易見,java8隻用了一行代碼實現排序,我這裡並沒有用傳統部落格裡寫的類似(o1,o2)->o1-o2這種代碼,因為我認為目前我寫的這個版本是能非常直觀的看出差異的。

代碼讀起來的感覺就像是,對List排序,通過Person的age正序排列,不再是對List排序,建立一個匿名內部類,排序邏輯是正序。

為什麼說是正序,如果是逆序的話是代碼是這樣寫的。

Collections.sort(list, Comparator.comparing(Person::getAge).reversed());

只需要加一個reversed(),相信不少同學,在平常寫排序代碼時,都要理一下這個邏輯,而java8可以非常直觀的表達出這一點,並且代碼非常的乾淨,一行代碼,完美解決。

 

(1)java8初體驗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.