【发布时间】:2020-10-11 16:39:43
【问题描述】:
我正在寻找用 Java 构建优先级队列的简单方法。我已经构建了一个ArrayList<Pair>,每个Pair 实例都包含一个X 和Y 值。
class Pair {
private final Float xVal;
private final Float yVal;
public Pair(Float aXVal, Float aYVal) {
xVal = aXVal;
yVal = aYVal;
}
public float getX() {
return xVal;
}
public float getY() {
return yVal;
}
}
我的ArrayList 看起来像:
ArrayList<Pair> listOfPoints;
使用ArrayList listOfPoints,我想构建两个优先级队列:
- 按 x 值从低到高排序。
- 按 y 值从低到高排序。
我一直在寻找一种使用 Lambda 表达式的简单方法。
我确实在 Stack Overflow 上查看了 this 问题,并找到了以下代码:
PriorityQueue<String> pq=
new PriorityQueue<String>(5,(a,b) -> a.length() - b.length());
我认为这接近我想要的。
我试图实现以下内容:
PriorityQueue<Pair> xSorted = new PriorityQueue<Pair>(numOfPoints, (x1,x2) -> Need Help Here);
如何访问 Pair 以便比较 x1 和 x2?
请注意,我将nummberOfPoints 设置为ArrayList<Pair> listOfPoints 的长度。
【问题讨论】:
-
您好,我提供了该链接作为参考,它正下方的代码块是我发现该链接有用的内容。我想要的是一个在优先队列中使用的 lambda 表达式,知道我使用的是类
而不是 -
PntPair构造函数不会为Pair类编译。请edit您的问题并格式化。 -
你的数组列表应该是
List<Pair> listOfPoints
标签: java sorting arraylist priority-queue