Вот полное решение, использующее подход Collections.shuffle
:
public static void shuffleArray(int[] array) {
List<Integer> list = new ArrayList<>();
for (int i : array) {
list.add(i);
}
Collections.shuffle(list);
for (int i = 0; i < list.size(); i++) {
array[i] = list.get(i);
}
}
Обратите внимание, что он страдает из-за невозможности плавного перехода между int[]
и Integer[]
(и, следовательно, int[]
и List<Integer>
).
Нет - пока Вы изменяете его в нужное время (т.е. когда Вы вносите изменение, которое влияет на сериализацию, например, удаление поля) не должно иметь значения, что оценивает Вас использование.
Для простоты я предложил бы запуститься с 0, и увеличить ее к 1 каждому разу Вы должны.
спецификация сериализации имеет больше деталей.
Единственная вещь, которая имеет значение для serialVersionUID, состоит в том, что совместимые с двоичным файлом сериализированные версии класса имеют тот же serialVersionUID; это - то, если Вы не внесли изменений повреждения в сериализированную форму класса, это будет прекрасно.
, Конечно, более оптимальный вариант состоит в том, чтобы использовать расширенные настройки, которые сериализация делает доступным для Вас так, чтобы никогда не было никаких изменений повреждения. Я предложил бы читать о readResolve () и др., Эффективный Java охватывает некоторые более тернистые проблемы в этой области подробно.