0

オブジェクトのリストがあり、id に対応するランダムなユーザー入力に基づいて特定のオブジェクトにアクセスする必要があります。この時点での私の限られた知識は、次のようなものにつながりました。

String id; 
if(id.equals("apple")){ //fixed silly error, thanks
    return objectList.id.memberName; 
} //etc...

これは可能ですか、それともより良いアプローチがありますか?

4

4 に答える 4

2

HashMapが必要なようです。

これは電話帳のように機能します。キーと値を入力し、キーを使用して値を検索します (電話帳で誰かの名前を使用して番号を検索するのと同じように)。

if ステートメントで = を使用しているため、この例もまったく機能しません。これは、等価チェックではなく代入ステートメントです。== はおそらく取得しようとしていたものですが、この場合はそれも使用しないでください。代わり.equals()に、文字列が関係する場合は常に使用する必要があるものを使用してください.)

于 2013-03-28T23:33:11.603 に答える
1
HashMap<String, SomeValueObject> myMap = new HashMap<String, SomeValueObject>();
myMap.put("apple", value);
String id;
if (id.equals("apple")) {
    return myMap.get("apple");
}

基本的に、2 つの部分を持つ HashMap をインスタンス化します。キーと値(それぞれ。私が行うmyMap.get("apple")と、キー「リンゴ」が検索されます。myMap.put("apple", value)これにより、キー「リンゴ」が必要な特定の値にマップされます。

id.equals("apple")また、文字列はオブジェクトであるため、使用する必要があります。試してみた場合id == "apple"(意図したと思います)、文字列の値ではなくアドレスを比較するため、機能しません。

于 2013-03-28T23:40:03.440 に答える
0

@ berry120 が実用的な回答を提供してくれました。一般に、何らかのキーに基づいて値を検索したいようです。Mapインターフェースと、具体的な実装のために JDK が提供するものを見てください。

于 2013-03-28T23:35:17.893 に答える
0

変数のは、実行時にのみ使用できます。一方、変数名はコンパイル時にわかっている必要があります。いいえ、あなたが求めているとおりにこれを行うことはできません。を使用するMapことは、おそらくあなたの問題に対する最良の解決策です。

于 2013-03-28T23:35:52.310 に答える