如何使用Java 8从对象列表中获取最小值和最大值

Vis*_*hwa 4 java list java-8 java-stream

我有这样的课:

public class Test {
    private String Fname;
    private String Lname;
    private String Age;
    // getters, setters, constructor, toString, equals, hashCode, and so on
}
Run Code Online (Sandbox Code Playgroud)

和一个List<Test> testList充满Test元素的列表.

如何获得age使用Java 8的最小值和最大值?

Psh*_*emo 17

为了简化一些事情你可能应该使你的年龄Integerint代替Sting,但因为你的问题是关于String age这个答案将基于String类型.


假设String age持有字符串代表整数的范围值,你可以简单地把它映射到IntStream和使用它的IntSummaryStatistics

IntSummaryStatistics summaryStatistics = testList.stream()
        .map(Test::getAge)
        .mapToInt(Integer::parseInt)
        .summaryStatistics();

int max = summaryStatistics.getMax();
int min = summaryStatistics.getMin();
Run Code Online (Sandbox Code Playgroud)

  • 谁编写将字符串存储在字符串中的域对象?啧.:) (3认同)
  • @BrianGoetz不太好.请注意,`getAge`返回`String`而不是`int`. (2认同)
  • 好的,但回到有用的领域,我试图做的一点是:lambda转换将做必要的改编,如加宽,装箱,铸造等,以弥补lambda的自然类型和目标类型之间的差异 - - 那个人不需要手动插入改装,如拆箱. (2认同)