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()); } } }