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");
}

本质上,您实例化了一个包含两个部分的 HashMap;一个键和一个值(分别。当我这样做时myMap.get("apple"),它会搜索键“苹果”。我这样做myMap.put("apple", value)了,这使得键“苹果”被映射到您想要的某个值。

您还需要使用id.equals("apple"),因为 String 是一个对象,如果您尝试过id == "apple"(我认为您的意思是),它将无法工作,因为它不会比较 String 的值,而是比较它的地址。

于 2013-03-28T23:40:03.440 回答
0

@berry120 提供了一个实用的答案。一般来说,听起来您想根据某个键查找值。查看Map接口以及 JDK 为具体实现提供了什么。

于 2013-03-28T23:35:17.893 回答
0

变量的仅在运行时可用。另一方面,必须在编译时知道变量名。所以不,你不能完全按照你要求的方式做到这一点。使用 aMap可能是解决您的问题的最佳方法。

于 2013-03-28T23:35:52.310 回答