Java HashMap get(Object key)的使用方法

我对get(Object key)这个使用方法很不懂,因为比如说我有一个LinkedHashMap<RecordID, Record>, 我要怎样才能用get(RecordID rid)检索出Record record呢?我如果直接造一个新的RecordID给get这个方法,明明这个map中是有这个RecordID的,可是由于是新造的,它指向null,所以得到的结果是null.
那么我要怎样在这个map中通过key来return value呢?

第1个回答  2009-12-08
你可以直接造一个新的RecordID给get这个方法,前提是你必须实现RecordID的equals方法和hashcode方法,用来比较两个对象是否相等,默认的equals方法是比较的地址。所以是不相等,得到的肯定是null。如果你的RecordID对象用Integer或是String等已经从新实现了的equals方法的类型代替,就可以直接new了。
你如果想遍历所有的可以用iterator
也可以直接用foreace循环如下:如果哪里不清楚,请留言
LinkedHashMap <RecordID, Record>lhm=new LinkedHashMap<RecordID, Record>();
for(Record i:m.values()){
System.out.println(i);
}
第2个回答  2009-12-08
先取出map中所有ID 这需要一个方法
Set set=linkedhashmap.getkeys()(你的map集合的一个方法)
然后对你建立的set集合 进行遍历
可以用增强for循环:
for(Object o:set){
if(o.equals(RecordID)){
String str = map.getvalue(o);
}
}
就可以了当然str要在外面定义本回答被提问者采纳
第3个回答  2009-12-08
当然是不能new一个新的了,必须是你声明这个map不能是局部的了

比如 HashMap LinkedHashMap<RecordID, Record> = new HashMap<RecordID, Record> ();

LinkedHashMap.put(id,record);
LinkedHashMap.get(id);

也就是说如果你全局都需要操作这个HashMap 的话,那么你要把它声明为一个全局变量,这样你先put在get,就会有值了
第4个回答  2009-12-08
map.put("A","123455");
map.put("B","123456");
map.put("C","123457");
map.put("D","123458");

map.get("A");
or
map.get(new String("A"));

Set<String> set=(Set<String>)map.keySet();
Iterator<String> iterator=set. iterator();
while(iterator.hasNext() ){
map.get(iterator.next());
}

}
第5个回答  2015-09-13
  get
  public V get(Object key)

  返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
  更确切地讲,如果此映射包含一个满足 (key==null ? k==null : key.equals(k)) 的从
k 键到 v 值的映射关系,则此方法返回 v;否则返回
null。(最多只能有一个这样的映射关系。)
  返回 null 值并不一定 表明该映射不包含该键的映射关系;也可能该映射将该键显示地映射为
null。可使用 containsKey
操作来区分这两种情况。

  指定者:
  接口 Map<K,V> 中的 get
  覆盖:
  类 AbstractMap<K,V> 中的
get

  参数:
  key - 要返回其关联值的键
  返回:
  指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
相似回答