有没有一种简单的方法可以从对象的arraylist中的对象的一个字段中获取最大值?
例如,在以下对象中,我希望获得Value字段的最高值.
示例arraylist我想从中获取ValuePairs.mValue的最大值.
ArrayList<ValuePairs> ourValues = new ArrayList<>();
outValues.add(new ValuePairs("descr1", 20.00));
outValues.add(new ValuePairs("descr2", 40.00));
outValues.add(new ValuePairs("descr3", 50.00));
Run Code Online (Sandbox Code Playgroud)
用于创建存储在arraylist中的对象的类:
public class ValuePairs {
public String mDescr;
public double mValue;
public ValuePairs(String strDescr, double dValue) {
this.mDescr = strDescr;
this.mValue = dValue;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图通过做类似的事情来获取mValue的最大值(我知道这是不正确的):
double dMax = Collections.max(ourValues.dValue);
Run Code Online (Sandbox Code Playgroud)
dMax应为50.00.
任何帮助表示赞赏.谢谢!
这已经被多次回答,但由于这是谷歌的第一个结果,我将以一个例子给出Java 8答案.
看看流功能.然后你可以得到最大格式的对象列表,如下所示:
List<ValuePairs> ourValues = new ArrayList<>();
ourValues.stream().max(comparing(ValuePairs::getMValue)).get()
Run Code Online (Sandbox Code Playgroud)
顺便提一下,在您的示例中,属性应该是私有的.然后,您可以使用getter访问它们.
借助Java 8,您可以将其stream()与预定义的max()功能和Comparator.comparing()带lambda表达式的功能一起使用:
ValuePairs maxValue = values.stream().max(Comparator.comparing(v -> v.getMValue())).get();
Run Code Online (Sandbox Code Playgroud)