我有一个对象列表,我需要根据与id对应的随机用户输入来访问特定的对象。我在这一点上的有限知识使我得到了类似的东西:
String id;
if(id.equals("apple")){ //fixed silly error, thanks
return objectList.id.memberName;
} //etc...
这可能,还是有更好的方法?
答案 0 :(得分:2)
听起来像是想要HashMap。
它的工作方式类似于电话簿 - 您输入密钥和值,并使用密钥查找值(就像您使用某人的名字在电话簿中查找他们的号码一样。)
您的示例也根本不起作用,因为您在if语句中使用了=,这是一个赋值语句而不是相等性检查。 ==是你可能想要获得的,但在这种情况下你也不应该使用它 - 而是使用.equals()
,当你关注字符串时应该总是使用它。)
答案 1 :(得分:1)
HashMap<String, SomeValueObject> myMap = new HashMap<String, SomeValueObject>();
myMap.put("apple", value);
String id;
if (id.equals("apple")) {
return myMap.get("apple");
}
基本上,你实例化一个包含两部分的HashMap;一个键和一个值(分别。当我myMap.get("apple")
时,它会搜索KEY“apple”。我做了myMap.put("apple", value)
,这使得键“apple”被映射到你想要的某个值。
你还需要使用id.equals("apple")
,因为String是一个对象,如果你尝试id == "apple"
(我认为你的意思),它将无法工作,因为它不会比较它的值字符串,而不是它的地址。
答案 2 :(得分:0)
答案 3 :(得分:0)
变量的值仅在运行时可用。另一方面,在编译时必须知道变量名。所以不,你不能按照你要求的方式做到这一点。使用Map
可能是解决问题的最佳方法。