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方式遍历。这些方式都可以。希望可以帮到你。