关于Java集合---MAP问题

package com;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Test {
private Map<String, Integer> maps = new HashMap<String, Integer>();;
private Stu su = new Stu();

public void tte() {
su.setName("小明");
su.setAge(22);
// su.setName("小张");
// su.setAge(21);

System.out.println("添加前没有数据是吗?:----->" + maps.isEmpty());

if (maps.isEmpty() == false) {
System.out.println("已有数据,不需添加了");

} else if (maps.isEmpty() == true) {
maps.put(su.getName(), su.getAge());
System.out.println("已添加");
System.out.println("添加后没有数据是吗?:" + maps.isEmpty());
}

}

public static void main(String[] args) {
Test t = new Test();
t.tte();
}
}

请问师傅。我的if (maps.isEmpty() == false) {
System.out.println("已有数据,不需添加了");为什么一直都输出不了 ?????怎么判断然后输出???

最好能讲的细一点,谢谢师傅!!!!!
class Stu {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

public String toString()
{
String info="姓名 :"+this.getName()+" 性别:"+this.getAge();
return info;
}
}

-----这是STU类

//我在你的相关语句上进行了注释
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
class Stu
{
String name;
int age;
public void setName(String str)
{
name=str;
}
public void setAge(int i)
{
age=i;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
public class Test {
private Map<String, Integer> maps = new HashMap<String, Integer>();;
private Stu su = new Stu();

public void tte() {
su.setName("小明");
su.setAge(22);
// su.setName("小张");
// su.setAge(21);

System.out.println("添加前没有数据是吗?:----->" + maps.isEmpty());//一上来当然没有数据啦

if (maps.isEmpty() == false) {
System.out.println("已有数据,不需添加了");//现在你并没添加数据,当然不会输出

} else if (maps.isEmpty() == true) { //既然没添加数据,条件成立,执行语句
maps.put(su.getName(), su.getAge());
System.out.println("已添加");
System.out.println("添加后没有数据是吗?:" + maps.isEmpty());
}

}

public static void main(String[] args) {
Test t = new Test();
t.tte();
}
}
//最后说一点,你的
if (maps.isEmpty() == false) {
System.out.println("已有数据,不需添加了");
这个语句在程序的开始,当然不可能输出.并且,就算是添加了,也只是在程序运行时加进了内存.程序第二次运行时,系统分配了新的内存.不知你是不是在这点上理解有误.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-31
当然输出不了 你运行之前hashmap本来就是空的maps.isEmpty 返回true,执行下面那一段了 你为什么要maps.isEmpty() == false这么写 直接写if(maps.isEmpty()) 或者 if(!maps.isEmpty())
你把你的程序这里改成
public static void main(String[] args) {
Test t = new Test();
t.tte();
t.tte();
}
你就会发现他会执行了
第2个回答  2010-01-31
。。。你的想的有点偏了~
public static void main(String[] args) {
Test t = new Test();
t.tte();

你方法只调用一次tte()方法
System.out.println("已有数据,不需添加了"); 肯定不能输出来

在t.tte();后面 在调用一次 t.tte();就出来你要的效果了
第3个回答  2010-01-31
因为开始时集合中没有数据,所以if的条件maps.isEmpty() == false不满足,所以System.out.println("已有数据,不需添加了");不执行
要想执行这一句,可以在if语句之前加上一句
maps.put(su.getName(), su.getAge());
这样就可以输出了
第4个回答  2010-01-31
不明白楼上在说什么,
问题是楼主对方法isEmpty()使用反了吧,如果Map中没有Key和Value,那么isEmpty()返回值是true,有Key才是false,应该是小失误吧,很正常
第5个回答  2010-02-01
public boolean isEmpty()如果此映射不包含键-值映射关系,则返回 true。

指定者:
接口 Map<K,V> 中的 isEmpty
覆盖:
类 AbstractMap<K,V> 中的 isEmpty
返回:
如果此映射不包含键-值映射关系,则返回 true

if (maps.isEmpty() == false) {
System.out.println("已有数据,不需添加了");

}
人家是true,你怎么让人家输出啊,看看api把!低级失误啊!
相似回答