Что ж, вам на самом деле не нужно делать глубокую копию, если только ваш Comparator
не изменяет ваши объекты, чего не должно быть. Поэтому самый простой способ - сделать неглубокую копию:
ArrayList<String> original = new ArrayList<>();
ArrayList<String> copy = new ArrayList<>(original);
copy.sort(Comparator.naturalOrder());
Заменить Comparator.naturalOrder()
вашей реальной реализацией Comparator
. Например, если вы сравниваете поле участника, вы можете использовать Comparator.comparing
как простой способ создать желаемый Comparator
.
И чтобы ответить на ваш вопрос: Нет, это невозможно без дополнительных данных структура, потому что, с одной стороны, вы хотите изменить порядок элементов, т.е. отсортировать их, а с другой стороны, вы хотите, чтобы они оставались в том же порядке.