2015-06-26 38 views
4

我有喜歡類擺脫對象列表最小值和最大值:如何使用Java 8

public class Test { 
    private String Fname; 
    private String Lname; 
    private String Age; 
    // getters, setters, constructor, toString, equals, hashCode, and so on 
} 

和充滿Test元素,如List<Test> testList列表。

如何使用Java 8獲得最小值和最大值age

+1

排序列表;) – MadProgrammer

+1

我恨聽起來像一個破紀錄,但是......'你有什麼嘗試?向我們展示一些代碼和一個特定的錯誤或問題。' – Jashaszun

+1

既然你指定了,你想使用Java 8,請看['Streams'](https://docs.oracle.com/javase/8/docs /api/java/util/stream/Stream.html)。你應該能夠自己找出其餘的問題。 – Turing85

回答

17

爲了簡化事情你應該讓你的Integer年齡或int,而不是螫人,但因爲你的問題是關於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(); 
+1

不需要雙圖;只是mapToInt(Test :: getAge),拆箱將爲您完成。 –

+2

@BrianGoetz不完全。注意'getAge'返回'String'而不是'int'。 – Pshemo

+3

誰寫字段中存儲數字的對象?嘖。 :) –