本文目录一览:
java中的集合map问题
iter.next()
当遍历到最后一个的时候
正好被iter.next()打印出来了
然后又要打印下一个 这时已经没有下一个了
所以会报错
解决方法有两个
hashtable添加一对key和value
或者用推荐答案的方法
感觉你想表达的也是 先打印key 然后打印对应的value
就用用object方法就行
for(Iterator iter = map.keySet().iterator();iter.hasNext();)
{
Object obj = iter.next();
System.out.println(obj);
System.out.println( map.get(obj));
}
java集合定义map
Map接口映射唯一键的值。一个关键是,要使用在日后检索值对象。
给定一个键和一个值,可以在一个Map对象存储的值。后的值被存储时,可以使用它的键检索。
抛出一个NoSuchElementException异常,是因为调用映射不存在的项目。
当一个对象是在映射上的元素不兼容抛出一个ClassCastException异常。
NullYiibaierException异常被抛出,如果试图使用一个空对象。
当试图改变一个不可修改的Map,则抛出一个UnsupportedOperationException异常。
SN
方法与描述
void clear( )
移除调用映射的所有键/值对。
boolean containsKey(Object k)
返回true如果调用映射包含k作为重点。否则,返回false。
boolean containsValue(Object v)
返回true如果映射包含v作为一个值。否则,返回false。
Set entrySet( )
返回一组包含在地图中的条目。该集合包含类型Map.Entry对象。这种方法提供了一组视图调用地图。
boolean equals(Object obj)
如果obj是一个Map返回true,并且包含相同的条目。否则,返回false。
Object get(Object k)
返回与k关联的值。
int hashCode( )
返回调用映射的哈希代码。
boolean isEmpty( )
如果调用映射为空返回true。否则,返回false。
Set keySet( )
返回一个集,其中包含调用映射的键。这种方法提供了一组视图中调用映射的键。
Object put(Object k, Object v)
放入调用映射中的条目,覆盖与键相关联的任何一个值。键和值分别为k和v。如果不已经存在键返回null。否则,将返回关联键的前一个值。
void putAll(Map m)
把从m所有条目放进入此映射。
Object remove(Object k)
删除其关键字等于k中的条目。
int size( )
返回在映射上的键/值对的数目。
Collection values( )
返回包含在映射中的值的集合。这种方法提供了一个集合视图在映射中的值。
例子:
映射有其不同的类实现,比如HashMap。下面是例子来说明映射功能:
Map Elements
{Mahnaz=31, Ayan=12, Daisy=14, Zara=8}
关于Java集合---MAP问题
//我在你的相关语句上进行了注释
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 MapString, Integer maps = new HashMapString, 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("已有数据,不需添加了");
这个语句在程序的开始,当然不可能输出.并且,就算是添加了,也只是在程序运行时加进了内存.程序第二次运行时,系统分配了新的内存.不知你是不是在这点上理解有误.