In addition to what matsev already said:
If your code is GPL, you can simply copy the SUN implementation:
public static void shuffle(List<?> list, Random rnd) { int size = list.size(); if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) { for (int i=size; i>1; i--) swap(list, i-1, rnd.nextInt(i)); } else { Object arr[] = list.toArray();
Mostly Fisher Yates shuffle with some optimizations if the list is not random access.
source share