Wil*_*oat 2 java priority-queue
我有一个User实现Comparable 的类.在我添加用户列表后,PriorityQueue<User>他们应该优先考虑scores,但由于某种原因他们没有.你可以帮我弄清楚为什么用户没有在我的分类Queue?
更新:
我通过轮询元素访问队列.prioritisedUsers.poll()它总是带有顺序尊重的随机分数.
PriorityQueue<User> prioritisedUsers = userPriorityStrategy.computeUserPriority(users);
while(!prioritisedUsers.isEmpty()){
System.out.println(prioritisedUsers.poll().getPriorityScore());
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
0.35036433736768735
0.6619121139678329
0.09520067929838127
0.4013591573863
0.6704568389588227
0.5989900926939181
0.7320779721160738
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
public class User implements Comparable<User>{
private long id;
private String fistName;
private String lastName;
private double priorityScore;
public User (long id, String firstName, String lastName){
this.id = id;
this.fistName = firstName;
this.lastName = lastName;
}
public double getPriorityScore(){
return this.priorityScore;
}
public void setPriorityScore(double priorityScore){
this.priorityScore = priorityScore;
}
public long getId(){
return this.id;
}
public String getFistName(){
return this.fistName;
}
public String getLastName(){
return this.lastName;
}
public int compareTo(User o) {
return (int) (this.getPriorityScore() - o.getPriorityScore());
}
}
public PriorityQueue<User> computeUserPriority(List<User> users) {
PriorityQueue<User> prioritisedUsers = new PriorityQueue<User>(users.size());
for (User user : users) {
user.setPriorityScore(rand.nextDouble());
prioritisedUsers.add(user);
}
return prioritisedUsers;
}
Run Code Online (Sandbox Code Playgroud)
我不太确定你的转换为(int)效果很好......因为转换为int会隐式丢弃任何小数.
如果我没有错,试试类似的东西
public int compareTo(User object) {
if (this.getPriorityScore() < object.getPriorityScore())
return -1;
if (this.getPriorityScore() == object.getPriorityScore())
return 0;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
或者更简单地说:
public int compareTo(User o) {
return Double.compare(this.getPriorityScore(), o.getPriorityScore());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |