我有一个对象列表,我需要根据与 id 对应的随机用户输入来访问特定的对象。在这一点上,我有限的知识使我想到了类似的东西:
String id;
if(id.equals("apple")){ //fixed silly error, thanks
return objectList.id.memberName;
} //etc...
这是可能的,还是有更好的方法?
我有一个对象列表,我需要根据与 id 对应的随机用户输入来访问特定的对象。在这一点上,我有限的知识使我想到了类似的东西:
String id;
if(id.equals("apple")){ //fixed silly error, thanks
return objectList.id.memberName;
} //etc...
这是可能的,还是有更好的方法?
听起来你想要一个HashMap。
它就像电话簿一样工作——您输入键和值,然后使用键来查找值(就像您使用某人的名字在电话簿中查找他们的号码一样。)
您的示例也根本不起作用,因为您在 if 语句中使用 = ,这是一个赋值语句而不是相等性检查。== 是您可能想要得到的,但在这种情况下,您也不应该使用它 - 而是使用.equals()
在涉及字符串时应该始终使用的。)
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")
,它会搜索键“苹果”。我这样做myMap.put("apple", value)
了,这使得键“苹果”被映射到您想要的某个值。
您还需要使用id.equals("apple")
,因为 String 是一个对象,如果您尝试过id == "apple"
(我认为您的意思是),它将无法工作,因为它不会比较 String 的值,而是比较它的地址。
@berry120 提供了一个实用的答案。一般来说,听起来您想根据某个键查找值。查看Map接口以及 JDK 为具体实现提供了什么。
变量的值仅在运行时可用。另一方面,必须在编译时知道变量名。所以不,你不能完全按照你要求的方式做到这一点。使用 aMap
可能是解决您的问题的最佳方法。