新手:使用变量作为点运算符的rhs参数?

时间:2013-03-28 23:31:03

标签: java

我有一个对象列表,我需要根据与id对应的随机用户输入来访问特定的对象。我在这一点上的有限知识使我得到了类似的东西:

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

这可能,还是有更好的方法?

4 个答案:

答案 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)

@ berry120提供了一个实用的答案。通常,听起来您希望根据某些键查找值。查看Map接口以及JDK为具体实现提供的内容。

答案 3 :(得分:0)

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