小编Kok*_*fuu的帖子

带有自定义Comparator的Java PriorityQueue

我正在使用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 priority-queue

7
推荐指数
1
解决办法
8581
查看次数

使用Java 8流方法获取最大值

我想使用java 8流方法从列表中获取最大值.

结构如下:

  • 我读了一个csv文件,并将每行的数据存储在一个单独的类型对象中Round.
  • 所有这些Round对象都存储在一个ArrayList被调用的中arrRound
  • 所有Round对象都有一个字段:List<Hit> hits
  • a Hit由2个字段组成:int numberOfGamesint prizeAmount
public 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().

提前谢谢你的帮助!

java methods max java-8 java-stream

2
推荐指数
1
解决办法
1288
查看次数

标签 统计

java ×2

java-8 ×1

java-stream ×1

max ×1

methods ×1

priority-queue ×1