gpt4 book ai didi

java - 根据偏好对一群人进行排序

转载 作者:行者123 更新时间:2023-12-02 08:39:59 24 4
gpt4 key购买 nike

我正在设计一个组生成器,它接受“混合性别”、“混合国籍”等首选项...我将学生姓名列表,然后是国籍和基因集放入数组列表中。根据用户输入生成群组的最简单方法是什么,每个群组由来自不同国籍或平衡性别的人组成。

 public ArrayList<String> readEachWord(String className)
{
ArrayList<String> readword = new ArrayList<String>();
Scanner sc2 = null;
try {
sc2 = new Scanner(new File(className + ".txt"));
} catch (FileNotFoundException e) {

System.out.println("error, didnt find file");
e.printStackTrace();
}
while (sc2.hasNextLine()) {
Scanner s2 = new Scanner(sc2.nextLine());
while (s2.hasNext()) {
String s = s2.next();
readword.add(s);
}
}
return readword;


}

我用它来读取一个文本文件,在每一行上,我都有每个学生的姓名、国籍和性别。我将它们放入 ArrayList 中,现在正在尝试找出如何根据用户所需的组数均匀分布它们。

我使用 txt 文件来存储所有信息,因为该组生成器是为我的学校定制的。

最佳答案

这里有一些可以帮助您入门的内容。这个简短的算法将根据指定的歧视因素(国籍、性别等)对人们进行分类,然后将他们均匀地分配到指定数量的组中。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Main {

private static class Person {
private String nationality;
private String gender;

public Person(String nationality, String gender) {
this.nationality = nationality;
this.gender = gender;
}


public String getNationality() {
return nationality;
}

public String getGender() {
return gender;
}

@Override
public String toString() {
return "Person{" +
"nationality='" + nationality + "'" +
", gender='" + gender + "'" +
"}";
}
}

public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("DE", "male"),
new Person("DE", "female"),
new Person("DE", "n/a"),
new Person("UK", "female"),
new Person("UK", "female"),
new Person("UK", "female"),
new Person("JP", "trans"),
new Person("JP", "male")
);


int number_of_groups = 3;

Function<Person, String> discriminator = Person::getGender;

AtomicInteger index = new AtomicInteger();
List<List<Person>> groups = new ArrayList<>(people.stream()
.sorted(Comparator.comparing(discriminator))
.collect(Collectors.groupingBy(e -> index.getAndIncrement() % number_of_groups))
.values());

groups.forEach(System.out::println);
}
}

输出:

[Person{nationality='DE', gender='female'}, Person{nationality='UK', gender='female'}, Person{nationality='JP', gender='trans'}]
[Person{nationality='UK', gender='female'}, Person{nationality='DE', gender='male'}]
[Person{nationality='UK', gender='female'}, Person{nationality='DE', gender='n/a'}]

关于java - 根据偏好对一群人进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61436285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com