Перестановочные группы элементов в массиве - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю над генератором групп, и в настоящее время я делаю ArrayList из этого текстового файла. enter image description here

Таким образом, ArrayList имеет вид [PedroA, Brazil, Male, 10G, Saadia ...]

Я хочу перемешать 4 элементов за раз, чтобы рандомизировать этот массив.

Я храню информацию в

ArrayList<String> studentInfo = info.readEachWord(className);

1 Ответ

1 голос
/ 27 апреля 2020

Это очень сложно сделать. Это возможно, конечно, но сложно.

Это становится трудным делом, потому что то, что вы хотите сделать, это странно.

Обычный способ сделать это:

  1. Создайте класс, представляющий одну запись, назовем его class Person.
  2. Считайте эти данные, проанализировав каждую строку в одном экземпляре Person, и добавьте их все в список.
  3. Просто позвоните Collections.shuffle(list);, чтобы перетасовать их.

Если у нас есть вышеперечисленное, мы можем сделать то, что вы хотите, преобразовав List<Person> обратно в List<String>. Во многих отношениях это самый простой способ выполнить задачу, которую вы запрашиваете, но затем вы начинаете задумываться, зачем вам эти данные в виде списка строк.

enum Gender {
    MALE, FEMALE, OTHER;

    public static Gender parse(String in) {
        switch (in.toLowerCase()) {
        case "male": return MALE;
        case "female": return FEMALE;
        default: return OTHER;
    }
}

class Person {
    String name;
    String location;
    Gender gender;
    [some type that properly represents whatever 10G and 10W means];

    public static Person readLine(String line) {
        String[] parts = line.split("\\s+", 4);
        Person p = new Person();
        p.name = parts[0];
        p.location = parts[1];
        p.gender = Gender.parse(parts[2]);
        ...;
        return p;
    }
}

вы получаете идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...