Dazu gibt es Algorithmen die von Donald E. Knuth entwickelt wurden. Eine moderne effiziente Version dieses Algorithmus ist der Fisher-Yates Shuffle Algorithmus.
Eine andere Möglichkeit wie dies mit C# geschehen kann zeigt dieser Artikel.
Laut den API Docs ist wird dabei genau der Fisher-Yates Shuffle verwendet (Durstenfeld's version, siehe wiki) Für Java sollte man also am besten die Collections-Methode verwenden
Für Java sollte man also am besten die Collections-Methode verwenden