java集合map随笔(java创建一个map集合)

发布时间:2022-11-09

本文目录一览:

  1. java中的集合map问题
  2. java集合定义map
  3. 关于Java集合---MAP问题

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异常。 NullPointerException异常被抛出,如果试图使用一个空对象。 当试图改变一个不可修改的Map,则抛出一个UnsupportedOperationException异常。

方法与描述

  • 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): 放入调用映射中的条目,覆盖与键相关联的任何一个值。键和值分别为kv。如果键已经不存在返回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 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("已有数据,不需添加了");
}

这个语句在程序的开始,当然不可能输出。并且,就算是添加了,也只是在程序运行时加进了内存。程序第二次运行时,系统分配了新的内存。不知你是不是在这点上理解有误。