gpt4 book ai didi

java - 获取具有多个属性的枚举列表并将它们放入 ArrayList 或 HashMap 中?

转载 作者:行者123 更新时间:2023-12-01 19:42:29 25 4
gpt4 key购买 nike

我有一个 People 枚举类,每个人枚举定义为:

enumName(String name, String age, String Occupation)

示例:

public enum People{
Joe1("Joe","31","Engineer"),
Joe2("Joe","35","Manager"),
Sam1("Sam", "22", "Student"),
Sam1("Sam", "22", "Student"),
Sam1("Sam", "23", "Student"),
Sam2("Sam", "30", "lawyer"),
Sam3("Sam", "45", "judge");
}

Joe1 和 Joe2 代表同一个人 Joe 的数据,但年龄/职业不同。如何制作姓名的 ArrayList 或 HashMap /表以及可以通过人名搜索的不同年龄/职业?

所以我不确定数据结构是什么样子,或者即使它是正确的,但我希望能够搜索一个名字并获取与该名字相关的每个年龄和职业值,例如我会搜索“Joe”并返回:

Joe-31-Engineer
Joe-35-Manager

对于 Sam 的值,有重复项,但我仍然希望在搜索 Sam 的名字“Sam”时能够看到它们:

 Sam-22-Student
Sam-22-Student
Sam-23-Student
Sam-30-lawyer
Sam-45-judge

最佳答案

您可以在枚举中创建一个静态变量,该变量由 personName 使用人员组进行初始化:

enum People {
Joe1("Joe", "31", "Engineer"),
Joe2("Joe", "35", "Manager"),
Sam1("Sam", "22", "Student"),
Sam2("Sam", "30", "lawyer"),
Sam3("Sam", "45", "judge");

private String personName;
private String age;
private String occupations;

private static Map<String, List<People>> byName;

static {
byName = Arrays.stream(values())
.collect(Collectors.groupingBy(People::getPersonName,
Collectors.toList()));
}

People(String personName, String age, String occupations) {
this.personName = personName;
this.age = age;
this.occupations = occupations;
}
public static List<People> getByName(String personName) {
return byName.get(personName);
}
}

然后您可以使用以下声明按姓名搜索人员(年龄、职业):

 List<People> p = People.getByName("Joe");

关于java - 获取具有多个属性的枚举列表并将它们放入 ArrayList 或 HashMap 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848955/

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