Rumah  >  Soal Jawab  >  teks badan

lambda - java8 Objek disusun mengikut susunan medan tertentu dalam objek

Sebagai contoh, saya ingin mempunyai Pengguna kelas
Atribut di dalamnya adalah seperti ini private int age,private String name
Ada beberapa objek

User user1 = new User(21,"张三") User user2 = new User(25,"李四") User user3 = new User(22,"王五")     List<User> list = new ArrayList(); list.add(user1) add(user2) add(user3)

Sekarang saya ingin menyusunnya mengikut urutan umur, iaitu, hasil paparan akhir lisr ialah pengguna1 pengguna3 pengguna2
Bagaimana cara menulisnya menggunakan ungkapan lambda java8?

Ini adalah kelas yang serupa dengan pengguna Membandingkan nilai kiraan di dalam boleh merealisasikan fungsi, tetapi mengapa kod dalam kurungan berwarna kelabu?
Gerakkan tetikus ke atas. Laporan Can be replaced with Comparator.comparingInt more... (Ctrl+F1)

欧阳克欧阳克2645 hari yang lalu984

membalas semua(3)saya akan balas

  • 三叔

    三叔2017-06-23 09:15:33

    Yang di tingkat atas tidak mesra Cara berikut lebih bersifat deklaratif, bukan gaya imperatif lama

    List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge))
                                      .collect(Collectors.toList());

    Bukankah lebih mudah untuk membaca seperti ini?

    List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge).reversed())
                                      .collect(Collectors.toList());
    Userage属性进行个排序,属性是int就按照int排序,其实Comparator.comparing(User::getAge)Sangat selesa...haha

    balas
    0
  • ringa_lee

    ringa_lee2017-06-23 09:15:33

    Arrays.sort(list, (user1 , user2) -> Integer.compare(v1.age, v2.age));

    balas
    0
  • typecho

    typecho2017-06-23 09:15:33

    Pada pendapat saya, anda harus melaksanakan antara muka Setanding dan kemudian panggil jenis terus

    balas
    0
  • Batalbalas