集合Map

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());

    }
}

}

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

[code="java"]
你应该这样写的
Map map=new HashMap();

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

[/code]

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循环

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

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