我正在使用PriorityQueue和我自己的比较器,但不知何故最终结果并不总是好的.我应按等级平均值而不是名字排序,而不是id.no. 最后它应该返回队列中留下的名字.其余的名字很好,但他们的顺序不是.输入(名称,等级avg,id.no):
add John 3,75 50
add Mark 3,8 24
add Shafaet 3,7 35
poll
poll
add Samiha 3,85 36
poll
add Ashley 3,9 42
add Maria 3,6 46
add Anik 3,95 49
add Dan 3,95 50
poll
Run Code Online (Sandbox Code Playgroud)
预期产量:
Dan
Ashley
Shafaet
Maria
Run Code Online (Sandbox Code Playgroud)
我的结果:
Dan
Ashley
Maria
Shafaet
Run Code Online (Sandbox Code Playgroud)
你能帮我找到问题吗?先感谢您!
class StComp implements Comparator<Students> {
@Override
public int compare(Students st1, Students st2) {
if (st1.getCgpa() == st2.getCgpa()) {
if (st1.getName().equals(st2.getName()))
return st1.getId() - st2.getId();
else
return st1.getName().compareTo(st2.getName());
}
else
return (st1.getCgpa() …Run Code Online (Sandbox Code Playgroud) 我想使用java 8流方法从列表中获取最大值.
结构如下:
Round.Round对象都存储在一个ArrayList被调用的中arrRoundRound对象都有一个字段:List<Hit> hitsHit由2个字段组成:int numberOfGames和int prizeAmountpublic class Round{
private List<Hits> hits;
}
public class Hits{
private int numberOfGames;
private int prizeAmount;
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是迭代所有元素arrRound,获取他们的命中字段的getPrizeAmount()方法并获得最大值.我开始如下,但似乎无法做到:
public class Main(){
public void main(String[]args){
List<Round> arrRound = getRoundFromCSV();
int maxPrize = arrRound.stream()
.forEach(round -> {
round.getHits()
.forEach(hit -> hit.getPrizeAmount());
});
}
}
Run Code Online (Sandbox Code Playgroud)
而且我无法在声明的末尾调用max().
提前谢谢你的帮助!