2013-12-14 3 views
1

Я уверен, что что-то пропустил в своем чтении, но я не могу понять это. Моя программа получает список файлов изображений из каталога, а затем выбирает файлы случайным образом для отображения в качестве части игры. Проблема в том, что каждый раз, когда я запускал ее с использованием генератора случайных чисел, у него есть повторяющиеся числа. В чтении я видел Коллекции, и я думаю, что это сработает для меня, поскольку он случайным образом перетасовывает список. Это устраняет необходимость в генераторе случайных чисел. Моя проблема в том, что я не могу понять, как заставить его перетасовать файл [].Как перетасовать файл [] с помощью java-коллекций?

Это последняя вещь, которую я попытался

comboFile = filePath.listFiles(); 

    List listShuffle = new List(); 
    listShuffle = (List) Arrays.asList(comboFile); 

Использование списка без избавляется от этой ошибки, но теперь метод Collections.shuffle дает мне ошибку. Не подходит nethod найдено для воспроизведения в случайном порядке (java.awt.list)

Collections.shuffle(listShuffle); 

Как не я поворачиваю массив файлов в список перетасовать?

+0

, пожалуйста, напишите тип comboFile, потому что если это java.awt.List, это большая часть вашей проблемы, поскольку это не коллекция. – prmottajr

ответ

2

Вы используете неправильный шрифт. Измените свой импорт на java.util.List вместо java.awt.List. Ошибка говорит вам, что нет способа, который принимает тип списка, который вы передаете.

И да, вы, вероятно, хотите создать список, используя Arrays.asList(), как и другие ребята.

4

Проблема заключается в том, что listShuffle никогда не используется после перетасовки. Вы все еще читаете значения из массива comboFile, который никогда не перетасовывается.

Также должно быть Arrays.asList() вместо Array.asList().

+0

Я не обновлял другой код, так как получаю сообщение об ошибке с array.asList (comboFile). Сообщение не может найти метод символа asList (File []) – user1793408

+0

@ user1793408: для кого-то очень сложно помочь, если вы не включили какие-либо ошибки. Я обновил свой ответ тем, что может быть решением этой проблемы. – jwueller

+0

Извините, что я изменил свой код, чтобы сосредоточиться конкретно на проблеме и перечислил сообщение об ошибке. – user1793408

0

Попробуйте функцию Arrays.asList().

Это сделает обертку массива. И вызвать функцию shuffle(), которая изменит порядок внутренних элементов массива.

Смежные вопросы