获取 ArrayList 中具有最高值的特定元素
Get specific element with highest value in ArrayList
我是 java 的新手,我在使用 ArrayList
时遇到了问题。我想从 Jozef 和 Klaus 那里获得最高价值。
ArrayList
看起来像:
| Name | Age|
+--------------+----+
| Jozef Coin | 55 |
| Jozef Coin | 56 |
| Jozef Coin | 57 |
| Klaus Neumer | 34 |
| Klaus Neumer | 31 |
| Klaus Neumer | 59 |
到目前为止,这是我的代码,它只是 returns arraylist
中的最高值。
Person b = persons.get(0)
for(Person p: persons){
if(p.getAge() >= b.getAge()){
b = p;
System.out.println(b.toString());
}
}
我可能有点不知所措,但我很想知道这是否可行,如果可行,是否有解决方案。
除非我们知道 Person class 中的方法,否则很难回答,但这是我会做的一般方法。
Person b = persons.get(0)
int jozefHighest = 0;
int klausHighest = 0;
for(Person p: persons){
if(p.getName().startsWith("Jozef") {
if(p.getAge() > jozefHighest)
jozefHighest = p.getAge)_
} else if (p.getName().startsWith("Klaus")) {
if(p.getAge() > klausHighest)
klausHighest = p.getAge()
}
}
您可以使用 Comparable 完成您的任务
public class CompareAge implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge().compareTo(p2.getAge());
}
}
然后使用 CompareAge
class 如下
Collections.sort(myArrayList, new CompareAge());
myArrayList.get(arrayList.size() - 1); //Retrieve the last object
Java 8 很酷!
int[] a = {1,2,3,4};
OptionalInt maxValue = IntStream.of(a).max();
System.out.println("Max Value: " + maxValue);
您可以一步完成 Java 8:
Map<String, Integer> oldestMap = persons.stream()
.collect(Collectors.groupingBy(Person::getName,
Collectors.maxBy(Person::getAge).get());
你现在有一个从名字到最大年龄的映射。
我是 java 的新手,我在使用 ArrayList
时遇到了问题。我想从 Jozef 和 Klaus 那里获得最高价值。
ArrayList
看起来像:
| Name | Age|
+--------------+----+
| Jozef Coin | 55 |
| Jozef Coin | 56 |
| Jozef Coin | 57 |
| Klaus Neumer | 34 |
| Klaus Neumer | 31 |
| Klaus Neumer | 59 |
到目前为止,这是我的代码,它只是 returns arraylist
中的最高值。
Person b = persons.get(0)
for(Person p: persons){
if(p.getAge() >= b.getAge()){
b = p;
System.out.println(b.toString());
}
}
我可能有点不知所措,但我很想知道这是否可行,如果可行,是否有解决方案。
除非我们知道 Person class 中的方法,否则很难回答,但这是我会做的一般方法。
Person b = persons.get(0)
int jozefHighest = 0;
int klausHighest = 0;
for(Person p: persons){
if(p.getName().startsWith("Jozef") {
if(p.getAge() > jozefHighest)
jozefHighest = p.getAge)_
} else if (p.getName().startsWith("Klaus")) {
if(p.getAge() > klausHighest)
klausHighest = p.getAge()
}
}
您可以使用 Comparable 完成您的任务
public class CompareAge implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge().compareTo(p2.getAge());
}
}
然后使用 CompareAge
class 如下
Collections.sort(myArrayList, new CompareAge());
myArrayList.get(arrayList.size() - 1); //Retrieve the last object
Java 8 很酷!
int[] a = {1,2,3,4};
OptionalInt maxValue = IntStream.of(a).max();
System.out.println("Max Value: " + maxValue);
您可以一步完成 Java 8:
Map<String, Integer> oldestMap = persons.stream()
.collect(Collectors.groupingBy(Person::getName,
Collectors.maxBy(Person::getAge).get());
你现在有一个从名字到最大年龄的映射。