0

ArrayList グループ = 新しい ArrayList();

group.add("ジョン・スミス","5126123");

2つのデータを保存したいと思います。そのため、番号で名前にアクセスし、名前で番号にアクセスできます。これは ArrayList で可能ですか?

*そして、異なる人が同じグループ番号を持つことができます

4

3 に答える 3

1

この方法で ArrayList を使用できます:-

List<Map<String, String>> list = new ArrayList<Map<String, String>>();
                Map<String, String> map1 = new HashMap<String, String>();
                map1.put("John Smith","5126123");
                         list.add(map1); 

または、マップを直接使用できます:-

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("Some String", 42);
// or, more correctly:
map.put("Some String", Integer.valueOf(42));

を使用して検索できます

Integer result = map.get("Some String");
于 2012-08-27T08:18:51.280 に答える
1

簡単な解決策 (ただし、最も効果的ではないかもしれません): これは IDE に入力されていないため、ここにタイプミスがある可能性があります。

パブリック クラス ユーザー {

private int id;
private String name;

public User() {};

public User(int id, String name) {
    this.id = id;
    this.name = name;
}

public void setId(int id) {
    this.id = id;
}

public int getId() {
    return id;
}

public void setName(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

}

public class MyUserArray() {

private ArrayList<User> users;

public MyUserArray() {
    users = new ArrayList<User>();
}

public add() {
    users.add(user);
}

// Since you said the user name is unique, only
// one user will be returned
public User getUserByName(String name) {
    for(User user : users) {
        if(user.getName().equalsIgoreCase(name)) 
            return user;
    }

    // return null if no user is found
    return null;
}

// Since more users can have the same id, we will
// return an array list with results
public ArrayList<User> getUsersById(int id) {

    ArrayList<User> result = new ArrayList<User>();

    for(User user : users) {
        if(user.getId() == id) 
            result.add(user);
    }

    return result;
}

}

パブリック クラス MyClass {

public static void main(String[] args) {
    // Create users
    User user1 = new User(1, "John Doe");
    User user2 = new User(1, "Jack Sparrow");
    User user3 = new User(2, "Mickey Mouse");

    // Create the personal user array
    MyUserArray users = new MyUserArray();

    // Add the users
    users.add(user1);
    users.add(user2);
    users.add(user3);

    // Now you can search on id:
    ArrayList<User> userArrayList = users.getUsersById(1);
    for (User user : userArrayList) {
        System.out.println(user.getId() + " - " + user.getName());
        // This will print:
        // 1 - John Doe
        // 1 - Jack Sparrow
    }

    // Or search on name
    User user = users.getUserByName("Jack Sparrow");
    System.out.println(user.getId() + " - " + user.getName());
    // This will print: 1 - Jack Sparrow
}

}

于 2012-08-27T08:57:19.610 に答える
0

次のように配列リスト内に配列を格納できます group.add(new String[][] {"John Smith", "5125123"});

しかし、それがあなたが達成したいことを何でも達成するのを助けるのにどれほど役立つかはわかりません。

<key, value>別の方法は、ハッシュテーブルまたはペアで受け取るマップ/辞書データ型の他の実装を使用することです。ただし、検索はキーの使用のみに制限されます。

もう1つの方法は、John Smithとその関連情報を保持するオブジェクトを作成し、代わりにそのオブジェクトを配列リストに入れることです。ただし、データの検索と取得に役立つ追加のコードを作成する必要があります。

于 2012-08-27T08:07:47.567 に答える