1

我有一份这样的人的名单List<People>。现在我必须按每个人的性别来划分这个列表。之后我想要一个 2D 对象。第一个维度是性别,第二个维度是人本身。

我现在的问题是我不知道如何存储数据。我必须稍后从第二个维度添加和删除项目,如果可以使用[][] or (gender, position). 我考虑过嵌套的 ArrayLists,但我认为这是一个令人不快的解决方案。你会如何解决这个问题?

4

2 回答 2

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);
于 2013-08-03T11:06:35.133 回答
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;
        }
    }
}
于 2013-08-03T11:07:59.187 回答