Java ---------- 集合(三) Map接口

Map 接口

存储一组成对的  键(key)------- 值(value)对象,提供key 到value 的映射,通过key 来检索。

特点: key 不要求有序,不允许重复。value 不要求有序但允许重复

 

常用方法:

Object put(Object key,Object value)   :将相互关联的 key--value 放入集合,如果map 接口中包含了key对应的value 则旧值被替换

Object remove(Object key) : 从当前集合中删除与指定key 相关的映射,并返回该key 关联的旧value,没关返回null

Object get(Object key) : 获得与key 相关的value,如果key 不关联人和非null 的值,则返回null

boolean containsKey(Object key)  判断集合中是否存在key

boolean containsValue(Object Value) : 判断集合中是否存在value

boolean isEmpty() :  判断集合中是否存在元素

void clear()  : 清除集合中所有元素

int size():    返回集合中元素数量

Set keySet() :获取所有key 的集合

Collection values() : 获取所有value 集合

 

HashMap 类

            数据添加到HashMap 集合后,所有的数据类型将转换为Object 类型,取出的时候注意强转

            HashMap类不保证映射的顺序,特别是不保证顺序恒久不变

package com.obge.contr;

import java.util.HashMap;
import java.util.Map;

import com.stu.contr.Dog;

public class MapStu {
    public static void main(String[] args) {
        Dog dog1 = new Dog("小白",10);
        Dog dog2 = new Dog("大黄",11);
        //创建保存键 - 值对 的集合对象  向上转型
        Map mapDog = new HashMap();
        //使用put 方法按照键 -- 值的方式存储  均是object 类型,放入其他类型的会自动转换为object
        mapDog.put(1001, dog1);
        mapDog.put(1002, dog2);
        //输出存放了有多少个
        System.out.println("存了"+mapDog.size());
        //输出  键集
        System.out.println("键来:"+mapDog.keySet());
        //值来
        System.out.println(mapDog.values());
        //根据键获取值
        if(mapDog.containsKey(1001)) {
            //根据键值获取 对应的值对象
            Dog dog = (Dog)mapDog.get(1001);
            System.out.println("键名为1001的对应的名字为:"+dog.getName() );
                    
        }

        int key = 1002;
        if(mapDog.containsKey(key)) {
            //根据键值获取 对应的值对象
            Dog dog = (Dog)mapDog.get(key);
            System.out.println("键名为"+key+"的对应的名字为:"+dog.getName() );
                    
        }
        //判断值是否存在
        System.out.println("dog2 是否存在:"+mapDog.containsValue(dog2));
        
        //遍历键
        
        for(Object objMapKey : mapDog.keySet() ) {
            System.out.println(objMapKey.toString());
        }
        
        // 遍历值
        for(Object objValue: mapDog.values()) {
            Dog dog = (Dog)objValue;
            System.out.println("姓名:"+dog.getName()+"年龄:"+dog.getAge());
        }
                      
    }
    

}

 三种遍历方式均可

 

使用iterator

package com.obge.boge;

import com.obge.model.Animal;

import java.util.*;

public class HashMapStu {

    public static void main(String[] args) {
        Animal animal1 = new Animal("dog1",2,"n1");
        Animal animal2 = new Animal("dog2",1,"n1");
        Animal animal3 = new Animal("dog3",3,"n1");
        Map hashmap = new HashMap();
        hashmap.put("小1",animal1);




        hashmap.put("小2",animal2);
        System.out.println("元素中有:"+hashmap.size()+"个");
        System.out.println("有没有animal3:"+hashmap.containsValue(animal3));
        System.out.println("遍历所有");
//        for(Object obj:hashSet){
//            Animal animal = (Animal) obj;
//            System.out.println(animal.getName());
//        }
//        System.out.println("判断是否为空"+hashSet.isEmpty());
        //获取集合迭代器   Iterator

        //可以强转也可以不用强转
        Set keyStr = hashmap.keySet();
        Iterator iterator = keyStr.iterator();
        //通过迭代器依次输出集合中元素
        while (iterator.hasNext()){
            // next() 方法返回要访问的下一个元素
            System.out.println(iterator.next());
        }
        //使用泛型强转   
        Collection<Animal>collValue = hashmap.values();
        Iterator<Animal> iterator1value = collValue.iterator();
        while (iterator1value.hasNext()){
            Animal animal = (Animal) iterator1value.next();
            System.out.println("名字:"+animal.getName());
        }

    }


}

 

posted on 2020-03-16 18:59  obge  阅读(262)  评论(0编辑  收藏  举报