【发布时间】:2020-08-17 12:18:05
【问题描述】:
我正在开发组生成器并使用此方法对人员进行分组
public String nMix(String file, int numOfGroups) {
ReadFile info = new ReadFile();
ArrayList<String> studentInfo = info.readEachWord(file);
List<PeopleClass> people = new ArrayList<PeopleClass>();
for (int i = 0; i < studentInfo.size(); i += 4) {
people.add(new PeopleClass(studentInfo.get(i))); //name
}
Collections.shuffle(people);
// System.out.println(people.get(0).getName());
Function<PeopleClass, String> discriminator = PeopleClass::getName;
AtomicInteger index = new AtomicInteger();
List<List<PeopleClass>> groups = new ArrayList<>(people.stream()
.sorted(Comparator.comparing(discriminator))
.collect(Collectors.groupingBy(e -> index.getAndIncrement() % numOfGroups))
.values());
//groups.forEach(System.out::println);
groups.forEach(System.out::println);
String txt = "";
for(int j = 0; j < groups.size(); j ++) {
txt += "Group" + (j + 1);
txt += "\r\n";
txt += groups.get(j);
txt += "\r\n";
txt += "\r\n";
}
return txt;
}
我的人班
public PeopleClass(String name){
this.name = name;
}
但是每次我使用它时,这些组似乎不是随机的,而是按照原始 ArrayList 名称的顺序进行分组。我应该如何解决这个问题并使其随机化。
【问题讨论】:
-
洗牌后为什么要打电话给
.sorted(Comparator.comparing(discriminator))?
标签: java arraylist random shuffle