(a) Unerwünschter Seiteneffekt
Zum einen veränderst Du damit die übergebene Teilnehmerliste,
was wohl eher nicht gewünscht ist, wenn Du nur mal eben
ein zufälliges Element herausgreifen willst.
Gut, wenn die Liste unverändert bleiben soll, dann arbeite doch einfach auf einer Kopie.
Abgesehen davon wird jemand, der einen Vector benutzt, kaum Wert legen auf Sortierung.
Ok, Tom hatte eine LinkedList, also haette ich idealerweise der Methode eine LinkedList anstelle des Vectors übergeben, und davon eine Kopie angefertigt. Ich geb’s zu, nachlässig von mir.
Allerdings wäre dann wahrscheinlich dein Kommentar über die Performance noch ausführlicher geworden *grins*
(b) Performance-Bug
Für solch eine einfache Operation wie die Auswahl
eines Elements jedesmal die ganze Liste zu sortieren,
führt in realen Anwendungen früher oder später zu
üblen Wartezeiten. Die Laufzeit von Collections.shuffle()
ist linear, d.h. braucht immer länger, je größer Deine
Liste ist. Einen Zufallsindex erzeugen dagegen kostet
immer die gleiche konstante Zeit.
Sicher ist der Zufallsindex performanter. Dafür ist die Benutzung von Collections.shuffle
a) schneller implementiert vom Programmierer
b) und hält den Code lesbarer
Und wenn die Anwendung nicht grade auf 'nem 286er mit 12Mhz und 640k läuft, sollte die Benutzung von Collections.shuffle anstelle eines Zufallsindex nicht auffallen.
Nix für ungut, aber Dein Code war so gefährlich,
dass ich ihn nicht unkommentiert stehen lassen konnte.
„Gefährlich“? Aha. Na wenn du meinst.
Gruß,
Uwe