-1

配列リストを検索する簡単な方法はありますか? removeAll() や add() のようなコレクションには多くのことがありますが、リストを検索するためにこのようなものはありますか

4

2 に答える 2

2

UserArchiveリストをループし、各ユーザー ID を渡されたものと比較するメソッドをクラスに追加します。

public User findById(int id) {
    for (User u : list) {
        if (u.getCustomerID() == id) {
            return u;
        }
    }
    return null; // or empty User
}
于 2013-04-05T12:47:07.047 に答える
0

ループ内で if を実行し、ループ内の User の各インスタンスの ID を調べるオプションがあります。

for (User user : list) {
    if (user.getCustomerID == [The id to lookup]) {
       // Whatever you want to do
    }
}

または、User クラスの equals() メソッドをオーバーライドし、CustomerID の代わりに User の別のインスタンスを比較する場合、List.contains 関数のロックを解除することもできます。

equals の関数ヘッダーには次のように書かれています。

このリストに指定された要素が含まれている場合、true を返します。より正式には、このリストに (o==null ? e==null : o.equals(e)) となる要素 e が少なくとも 1 つ含まれている場合にのみ true を返します。

これが、オブジェクトの equals をオーバーライドする必要がある理由です。多くの関数はオブジェクトに equals() を使用しており、結果が良好であることを気にする場合は、関数をオーバーライドする必要があります。

// Or whatever instance of User you want to compare
User custToLookup = new User(idToLookup, "", "", "");

// You could stop here if you only want to know if the instance exist in the list
if (list.contains(custToLookup)){
    for (User user : list) {
        if (user.equals(custToLookup) {
            // Whatever you want to do
        }
    }
}

*編集:いくつかの単語を忘れました

于 2013-04-05T12:59:00.427 に答える