【发布时间】:2011-06-02 15:32:58
【问题描述】:
我有一个HashMap<Object, String[]> 我只想从String[] 中获取0 索引位置。我该怎么做?
我可以这样做吗? mMap.get(position)[0]?
【问题讨论】:
-
简单地尝试这个问题在哪里?
标签: java arrays collections
我有一个HashMap<Object, String[]> 我只想从String[] 中获取0 索引位置。我该怎么做?
我可以这样做吗? mMap.get(position)[0]?
【问题讨论】:
标签: java arrays collections
是的,只要position 是地图中的一个键,您就可以按照您的指示进行操作。
【讨论】:
position 是密钥,它就有效。
HashMap 没有0index,也没有String[]
你不能按照你的要求去做,因为它没有意义。
我可以这样做吗? mmap.get(位置)[0]?
你可以。你试过这个看看它是否有效?注意:如果 map.get() 返回 null 会失败
【讨论】:
地图不是数组。它是映射到项目的键字典。所以 Map 部分没有有序索引,有一个查找键。这意味着地图没有“下一个”项目。
如果您在地图中存储了 String[],那么您可以像这样获取 String 数组的第一个元素:
String first = ((String[])mMap.get(lookupKey))[0];
由于您使用的是泛型,因此您的编译器将不需要强制转换,从而简化答案
String first = mMap.get(lookupKey)[0];
请注意,这不是使用位置来访问存储在 Map 中的项目,而是使用查找键。此外,将返回的 Object 转换为 String[](因为我们之前在 map 中存储了 String[]),然后对第一个 ('0') 元素进行解引用。
【讨论】:
这是一个小演示程序,可以满足您的要求。
import java.util.Map;
import java.util.HashMap;
public class FirstElementInHashMap {
public static void main(String[] args) {
Map<Object,String[]> mMap = new HashMap<Object,String[]>();
mMap.put("myKeyA", new String[] { "myValue1", "myValue2", "myValue3" });
mMap.put("myKeyB", new String[] { "myValue4", "myValue5", "myValue6" });
mMap.put("myKeyC", new String[] { "myValue7", "myValue8", "myValue9" });
Object position = "myKeyB";
String[] strings = mMap.get(position);
// make sure position exists in the Map and contains a non-empty array
// so we don't throw an NullPointerException
String firstStringInArray = null;
if (strings != null && strings.length > 0) {
firstStringInArray = strings[0];
}
System.out.println(firstStringInArray);
}
}
上述程序的输出为:
myValue4
【讨论】: