나는 Comparable을 구현하는 User
클래스를 가지고 있습니다. PriorityQueue<User>
에 사용자 목록을 추가 한 후에는 scores
으로 우선 순위를 지정해야하지만 어떤 이유에서든 그렇지 않습니다. 사용자가 내 Queue
에 분류되지 않은 이유를 알아 내도록 도와 주시겠습니까?PriorityQueue 순서가 잘못되었습니다. 자바
업데이트 :
폴링 요소를 통해 큐에 액세스 중입니다. prioritisedUsers.poll()
그것은 항상 순서 존중과 함께 무작위 점수와 함께 제공됩니다.
PriorityQueue<User> prioritisedUsers = userPriorityStrategy.computeUserPriority(users);
while(!prioritisedUsers.isEmpty()){
System.out.println(prioritisedUsers.poll().getPriorityScore());
}
출력 : 어떤 도움
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;
}
: 내가 잘못 아니에요 경우
, 다른 방법보다 간단하게
또는 같은 시도 임의의 점수와 함께 제공됩니다. –
제 잘못, 당신 말이 맞아요. 1 + –