Как вызвать коллекции.Перетасовать только часть массива Java

поэтому у меня есть следующий массив:

String [] randomList = new String [16];
    randomList[0]="Dog";
    randomList[1]="Dog";
    randomList[2]="Cat";
    randomList[3]="Cat";
    randomList[4]="Mouse";
    randomList[5]="Mouse";
    randomList[6]="Car";
    randomList[7]="Car";
    randomList[8]="Phone";
    randomList[9]="Phone";
    randomList[10]="Game";
    randomList[11]="Game";
    randomList[12]="Computer";
    randomList[13]="Computer";
    randomList[14]="Toy";
    randomList[15]="Toy";

Я хочу перетасовать только первые 9 элементов этого массива. Я использовал следующий код, но он перетасовывает весь массив.

Collections.shuffle(Arrays.asList(randomList));

как бы я перетасовал только часть массива, а не все это? Я делаю довольно простую программу, поэтому я хотел бы продолжать использовать класс Collections, однако все решения приветствуются. Спасибо

2 ответов


можно использовать List типа subList метод и List объект с представлением определенного диапазона элементов из исходного списка. Я не тестировал это, но я думаю, что это должно работать:

Collections.shuffle(Arrays.asList(randomList).subList(startIndex, endIndex));

вы также можете попробовать ниже. Тем не менее, более чистый код будет предлагаться templatetypedef. List<String> newList = new ArrayList<String>(); for(int i=0; i<randomList.size()-ValuePreferred; i++){ newList.add(randomList.get(i)); } Collections.shuffle(newList); randomList.removeAll(newList); newList.addAll(randomList);

кроме того, я слышу о проблеме утечки памяти с Подсписью в массивах. Не уверен, что это исправили. Если кто-то может предоставить полезную информацию об этом, было бы здорово. Помните, что конкретный вызов значения между списком вызовет IndexOutOfBoundsIssue (). Это надо уладить.