我正在編寫代碼以按年齡對人員列表進行排序,并為最舊的人添加前綴并打印出來定義的對象列表: 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);我能夠對其進行排序和添加前綴,但問題是獲取第一項并將其打印出來 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貢獻1856條經驗 獲得超17個贊
你可以做
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貢獻1795條經驗 獲得超7個贊
你可能只是在尋找
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
添加回答
舉報
0/150
提交
取消