我有一个像List<People>
这样的人的列表。现在我必须按每个人的性别划分这个列表。之后我想要一个2D对象。第一个维度是性别,第二个维度是人本身。
我现在的问题是我不知道如何存储数据。我必须稍后在第二个维度中添加和删除项目,如果可以使用[][] or (gender, position)
获取项目将会很好。我想过嵌套的ArrayLists,但我认为这是一个令人不快的解决方案。你会如何解决这个问题?
答案 0 :(得分:1)
更新
如果您需要这种表示法,请使用封装在“自定义”对象集合中的数组映射,如下所示:
enum Gender {
MALE, FEMALE
}
class MyInfo {
private Map<Gender, List<Person>> myInfo;
public MyInfo(List<Person> females, List<Person> males) {
myInfo = new HashMap<Gender, List<Person>>();
myInfo.put(Gender.MALE, males);
myInfo.put(Gender.FEMALE, females);
}
public Person get(Gender gender, int index) {
myInfo.get(gender).get(index);
}
}
并将每个人称为:
Person selectedPerson = myInfo.get(Gender.MALE, 100);
答案 1 :(得分:0)
我会像这样创建自己的数据结构:
public class PeopleList {
private List<Person> men;
private List<Person> women;
public Person get(char gender, int position){
switch (gender){
case 'M':
return men.elementAt(position);
case 'W':
return women.elementAt(position);
}
}
public void insert(Person p){
switch(p.getGender()){
case 'M':
men.insert(p);
break;
case 'W':
women.insert(p);
break;
}
}
}