我有一個對象列表,我需要訪問一個特定的基於對應於一個id的隨機用戶輸入。我有限的在這一點上的知識使我是這樣的:新手:使用變量作爲點運算符的rhs參數?
String id;
if(id.equals("apple")){ //fixed silly error, thanks
return objectList.id.memberName;
} //etc...
這是可能的,或者是有沒有更好的方法?
我有一個對象列表,我需要訪問一個特定的基於對應於一個id的隨機用戶輸入。我有限的在這一點上的知識使我是這樣的:新手:使用變量作爲點運算符的rhs參數?
String id;
if(id.equals("apple")){ //fixed silly error, thanks
return objectList.id.memberName;
} //etc...
這是可能的,或者是有沒有更好的方法?
聽起來像是你想要一個HashMap。
它就像一個電話簿 - (就像你用別人的名字來查找它們的數量在電話目錄中)你把鍵和值,並用鑰匙將查找值
你的例子也根本不起作用,因爲你在if語句中使用=,這是一個賦值語句而不是相等檢查。 ==是你可能試圖得到的,但在這種情況下,你不應該使用它 - 而是使用.equals()
,你應該總是使用字符串時)。
是的,這看起來像我應該使用,謝謝! – user1754483
@ berry120提供了一個實際的答案。一般來說,這聽起來像你想要根據某個鍵來查找值。查看Map接口以及JDK爲具體實現提供的內容。
變量的值僅在運行時可用。另一方面,編譯時必須知道變量名。所以不,你不能完全按照你所要求的方式來做這件事。使用Map
可能是解決您的問題的最佳解決方案。
HashMap<String, SomeValueObject> myMap = new HashMap<String, SomeValueObject>();
myMap.put("apple", value);
String id;
if (id.equals("apple")) {
return myMap.get("apple");
}
基本上你實例化一個HashMap,它包含兩個部分;一個Key和一個Value(分別當我做myMap.get("apple")
時,它搜索KEY「apple」,我做了myMap.put("apple", value)
,這就使得key「apple」被映射到了你想要的某個值上
你也需要使用id.equals("apple")
是因爲字符串是一個對象,並且如果您嘗試id == "apple"
(我認爲您的意思),它將不起作用,因爲它不會比較字符串的值而是它的地址。
這非常有幫助,謝謝。 – user1754483
一句話比較Java中的字符串:你應該使用equals來比較字符串,而不是== ==(只有'='發佈的代碼甚至不會編譯,因爲它在if條件中分配給'id',而不是換句話說,你的代碼的第二行應該是'if(id.equals(「apple」)){'。 –