1

私はこのような人々のリストを持っていますList<People>。ここで、このリストを各人の性別で分割する必要があります。その後、1 つの 2D オブジェクトが必要です。最初の次元は性別で、2 番目の次元は人そのものです。

私の問題は、データを保存する方法がわからないことです。後で2番目の次元からアイテムを追加および削除する必要があるため、アイテムを で取得できるといいでしょう[][] 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 に答える