我確實有一個User
類,它實現了Comparable。在我將用戶列表添加到PriorityQueue<User>
之後,他們應該優先選擇scores
,但由於某些原因,他們不會。您能否幫我弄清楚爲什麼用戶沒有在我的Queue
中排序?PriorityQueue命令不正確JAVA
更新:
我正在通過輪詢元素訪問隊列。 prioritisedUsers.poll()
它總是隨訂單尊重隨機得分。
PriorityQueue<User> prioritisedUsers = userPriorityStrategy.computeUserPriority(users);
while(!prioritisedUsers.isEmpty()){
System.out.println(prioritisedUsers.poll().getPriorityScore());
}
OUTPUT:
0.35036433736768735
0.6619121139678329
0.09520067929838127
0.4013591573863
0.6704568389588227
0.5989900926939181
0.7320779721160738
感謝您的幫助!
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;
}
我跑在我的IDE評估查詢'prioritisedUsers.poll()'總是隨機得分。 – 2014-09-21 19:42:25
我的不好,你是對的。 1+ – 2014-09-21 19:54:03