0 0

集合Map5

package ST;

import java.util.HashMap;
import java.util.Map;

import wang.Entity;

public class MapTest {
    public static void main(String[] args) {
    Entity  entity=new Entity("王田", 20, "男");
Entity  entity1=new Entity("王一", 20, "女");
Entity  entity2=new Entity("王二", 20, "男");
Entity  entity3=new Entity("王三", 20, "女");

Map<String, Entity> Ma=new HashMap<String, Entity>();

Ma.put("Java", entity);
Ma.put("ha", entity1);
Ma.put("yy", entity2);
Ma.put("uu", entity3);

for (String si:Ma()) {
                //这里报错?
System.out.println("姓名"+Ma.get(si).getName()+"\t"+"年龄"+Ma.get(si).getAge()+"\t"+"性别"+Ma.get(si).getSex());

}
}
}
 
2014年5月22日 23:48

4个答案 按时间排序 按投票排序

0 0

采纳的答案

object没有getName之类方法,应该先转成你的那个实体类型再get吧

2014年5月23日 07:48
0 0

引用

for (String si:Ma()) {
                //这里报错?

楼主,这里报错的原因,是你在使用for-each这种方式遍历元素时,后一种并不是集合类或者数组的一种,不能直接这样使用。
可以通过Map拿到keySet,之后可以通过for-each遍历这个keySet,用每个key再获取Map中对应的值。
例如:
Set<String> keys = Ma.keySet()
for(String key : keys) {
      Entity entity = Ma.get(key);
  }


或者使用keySet之后使用iterator方式遍历。这些方式都可以。希望可以帮到你。

2014年5月23日 09:07
0 0

for (String si:Ma())
既然用了foreach循环
System.out.println("姓名"+Ma.get(si).getName()+"\t"+"年龄"+Ma.get(si).getAge()+"\t"+"性别"+Ma.get(si).getSex());
这里就不对,如果想用上面的输出语句,就要用for循环
建议好好看看foreach和for循环

2014年5月23日 09:04
0 0

你应该这样写的
Map<String, Entity> map=new HashMap<String, Entity>(); 

        map.put("Java", entity); 
        map.put("ha", entity1); 
        map.put("yy", entity2); 
        map.put("uu", entity3); 
        
        for (Entry<String, Entity> entry: map.entrySet()) { 
            System.out.println("姓名"+entry.getValue().getName()+"\t"+
                               "年龄"+entry.getValue().getAge()+"\t"+
                               "性别"+entry.getValue().getSex()); 
        }

2014年5月23日 00:05

相关推荐

Global site tag (gtag.js) - Google Analytics