Как я могу прочитать файл и случайным образом извлечь информацию из него и добавить его в список массивов?

-11

Вот как выглядит мой текстовый файл

Cincinnati 
Oxford
Chicago
New York
Las Vegas
Houston
Detroit
Miami
Denver
Boston

Я хочу случайным образом заполнить ArrayListCity из текстового файла, а затем отсортировать его с помощью collection.sort. Все города из текстового файла должны быть в списке массивов, но в другом порядке каждый раз, когда программа запускается.

спросил(а) 2021-01-19T20:17:29+03:00 2 месяца, 3 недели назад
1
Решение
62

Прочитайте файл последовательно - это самый простой маршрут.

Затем случайным образом перемешайте коллекцию.

Собственно, другой вопрос. Не могли бы вы использовать math.random(), чтобы посмотреть на строки текстового файла, и если, скажем, строка 5 подходит, вы удаляете ее из параметров, которые вы задали для math.random()? Он будет выбирать от 0 до 9 и после того, как будет использоваться пятая строка, он будет выбирать из 0-4,6-9

Это возможно - но более усложняет ситуацию. Лучший способ реализовать такую функцию - иметь "пул" чисел. (т.е. arraylist объектов Integer), то вы можете использовать генератор случайных чисел (между 0 и arrayList.size()), чтобы получить (и удалить его из вашего списка объектов) один из этих объектов Integer. Затем прочитайте эту строку. Этот подход требует нескольких объектов (Random, Arraylist, Integer, Reader).

В лучшем случае, это слишком сложно. Лучше всего делать, как я уже сказал, читать каждую строку и вставлять ее в массив. Тогда достаточно.

Другое дело, прочитайте каждую строку, получите размер arraylist и вставьте новую строку, случайным образом в пределах arraylist. Вот какой код:

arrayList.add(getRandomIndex(arrayList.size()),string);

public int getRandomIndex(int size){
return ((int)Math.random()*size)
}

ответил(а) 2021-01-19T20:17:29+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема