我正在编写代码以按年龄对人员列表进行排序,并为最旧的人添加前缀并打印出来定义的对象列表: 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
提交
取消
