Używam PriorityBlockingQueue
z polem priorytetu. W moim teście używam System#currentTime()
dla priorytetów - te same priorytety są uzyskiwane przez komputer będący tak szybki, że milisekundy są takie same (lub bardziej podobne do milisekund na komputerze ma margines błędu).Dlaczego funkcja PriorityQueue nie zachowuje się jak kolejka?
Gdy priorytety są takie same, kolejka działa tak, jakby była stosem, co wydaje się dziwne. Czy istnieje alternatywa, aby kolejka działała tak, jakby była normalną kolejką (czyli raczej FIFO niż zachowanie LIFO), gdy priorytety elementów są takie same?
Obejrzałem dokumenty, ale oczekiwałem, że już istnieje klasa narzędziowa do tworzenia kolejki, a nie stosu. Jeśli ustawię kolejkę, powinien przejść do tyłu i przeskoczyć kolejkę, jeśli ma wyższy priorytet. – Ben
Dlaczego? Większość użytkowników używa 'PriorityBlockingQueue' _z różnymi priorytetami._ –
, ponieważ stos nie jest kolejką lub jest tylko semantyką? – Ben