Как вызвать коллекции.Перетасовать только часть массива 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 (). Это надо уладить.