2013-03-28 32 views
0

我有一個對象列表,我需要訪問一個特定的基於對應於一個id的隨機用戶輸入。我有限的在這一點上的知識使我是這樣的:新手:使用變量作爲點運算符的rhs參數?

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

這是可能的,或者是有沒有更好的方法?

+0

一句話比較Java中的字符串:你應該使用equals來比較字符串,而不是== ==(只有'='發佈的代碼甚至不會編譯,因爲它在if條件中分配給'id',而不是換句話說,你的代碼的第二行應該是'if(id.equals(「apple」)){'。 –

回答

2

聽起來像是你想要一個HashMap

它就像一個電話簿 - (就像你用別人的名字來查找它們的數量在電話目錄中)你把鍵和值,並用鑰匙將查找值

你的例子也根本不起作用,因爲你在if語句中使用=,這是一個賦值語句而不是相等檢查。 ==是你可能試圖得到的,但在這種情況下,你不應該使用它 - 而是使用.equals(),你應該總是使用字符串時)。

+1

是的,這看起來像我應該使用,謝謝! – user1754483

0

@ berry120提供了一個實際的答案。一般來說,這聽起來像你想要根據某個鍵來查找值。查看Map接口以及JDK爲具體實現提供的內容。

0

變量的僅在運行時可用。另一方面,編譯時必須知道變量名。所以不,你不能完全按照你所要求的方式來做這件事。使用Map可能是解決您的問題的最佳解決方案。

1
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"(我認爲您的意思),它將不起作用,因爲它不會比較字符串的值而是它的地址。

+0

這非常有幫助,謝謝。 – user1754483

相關問題