洗牌数组列表中的元素组

Shuffling groups of elements in an arraylist

我正在开发一个组生成器,目前我正在从这个 txt 文件制作一个 ArrayList。

因此,ArrayList 的形式为 [PedroA, Brazil, Male, 10G, Saadia...]

我想一次打乱 4 个元素,以随机化这个数组列表。

我将信息存储在

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

这很难做到。当然可以,但是很难。

它变得困难,因为你想做的事情很奇怪。

通常的做法是:

  1. 制作一个 class 表示单个条目,我们称它为 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;
    }
}

你明白了。