我正在編寫代碼以按年齡對(duì)人員列表進(jìn)行排序,并為最舊的人添加前綴并打印出來定義的對(duì)象列表: Person person1 = new Person(40,"John", "Smith"); Person person2 = new Person(45,"Mike", "Well"); Person person3 = new Person(68,"Bob", "Parks"); Person person4 = new Person(49,"Leon", "Foo"); Person person5 = new Person(30,"Christian", "Markus"); List<Person> personList = new ArrayList<>(); personList.add(person1); personList.add(person2); personList.add(person3); personList.add(person4); personList.add(person5);我能夠?qū)ζ溥M(jìn)行排序和添加前綴,但問題是獲取第一項(xiàng)并將其打印出來 List<Person> orderedPersonAge = personList .stream() .sorted(Comparator.comparing(Person::getAge).reversed()) .map(s-> new Person(s.getAge(),"Super"+s.getName(),s.getSureName())) .collect(Collectors.toList()); System.out.println(orderedPersonAge);我試著玩 findFirst() ...不同的方法是按年齡排序,取最舊的,然后添加前綴......
2 回答

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
你可以做
Person orderedPersonAge = personList .stream() .sorted(Comparator.comparing(Person::getAge).reversed()) .map(s-> new Person(s.getAge(),"Super"+s.getName(),s.getSureName())) .collect(Collectors.toList()) .get(0); System.out.println(orderedPersonAge);
或者
Person orderedPersonAge = personList .stream() .sorted(Comparator.comparing(Person::getAge).reversed()) .map(s-> new Person(s.getAge(),"Super"+s.getName(),s.getSureName())) .findFirst() .get(); System.out.println(orderedPersonAge);

一只萌萌小番薯
TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可能只是在尋找
personList.stream() .max(Comparator.comparing(Person::getAge)) // solves for sort with reverse and find first .map(s -> new Person(s.getAge(), "Super" + s.getName(), s.getSurname())) // map if present .ifPresent(System.out::println); // print the mapped output if present
添加回答
舉報(bào)
0/150
提交
取消