map集合
/*
java.util.Map接口中常用的方法
1、Map和Collection 没有继承关系
2、Map集合以key和value的方式存储数据:键值对key和valuea都是引用数据类型key和value都是存储对象的内存地址key起到主导地位,value是key的一个附属品
3、Map接口中常用的方法:Set(K) keySet()获取Map集合中所有的key(所有的键是一个set集合)V remove(Object key) 通过key删除键值对int size()获取Map集合中键值对的个数Collection<V> values() 获取Map集合中所有的value,返回一个Collectionset<Map.Entry<K,V>> entrySet()将Map集合转化为set集合假设现在有一个Map集合map集合对象key value--------------1 zhangsan【Map 集合通过entrySet()方法转换成set集合,set集合中的元素类型是Map.Entry<K,V>】 Map.Entry 和 String一样,都是一种类型的名字,只不过:Map.Entry是静态内部类2 lisi3 wangwuSet set = map.entrySet();set集合对象1=zhangsan2=lisi3=wangwu
*/
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class MapTest {public static void main(String[] args) {//创建Map集合对象Map<Integer,String> map = new HashMap<>();//向Map集合中添加键值对map.put(1,"zhangsan");//1 在这里进行了自动装箱map.put(2,"lisi");map.put(3,"wangwu");//通过key获取valueString value = map.get(1);System.out.println(value);//获取所有的valueCollection<String> values =map.values();for(String s: values){System.out.println("所有的value值"+s);}//获取键值对数量System.out.println("键值对的数量:"+map.size());//通过key删除 key-valuemap.remove(2);System.out.println("键值对的数量:"+map.size());//判断是否包含某个key//contains 底层调用的是equals方法进行比较的,所以自定义的类型需要重写equals方法 重写equals方法比较的是内容System.out.println(map.containsKey(4));//false//判断是否包含某个valueSystem.out.println(map.containsValue("zhangsan"));//true//清空mapmap.clear();System.out.println("键值对的数量:"+map.size());//0//判断是否为空System.out.println(map.isEmpty());}
}
遍历Map集合
public class MapTest {public static void main(String[] args) {//创建Map集合对象Map<Integer,String> map = new HashMap<>();//向Map集合中添加键值对map.put(1,"zhangsan");//1 在这里进行了自动装箱map.put(2,"lisi");map.put(3,"wangwu");//第一种方法,获取所有的key,通过遍历key,从而遍历value//遍历key,获取所有的Key,key是一个set集合Set<Integer> keys = map.keySet();//遍历key,通过key获取value//迭代器可以Iterator<Integer> it = keys.iterator();while(it.hasNext()){Integer key = it.next();String value =map.get(key);System.out.println(key+"="+value);}//foreach也可以for(Integer key:keys){System.out.println(key+"="+map.get(key));}
//第二种方式Set<Map.Entry<K,V>> entrySet()//这种方法是直接把Map集合转化为Set集合。//set集合中的元素类型是:Map.EntrySet<Map.Entry<Integer,String>> set = map.entrySet();//遍历Set集合,每一次取出一个node//迭代器
// Iterator<Map.Entry<Integer,String>> it2 = set.iterator();
// while(it2.hasNext()){
// Map.Entry<Integer,String> node = it2.next(); node是一个静态内部类 实现了Map.Entry(K,V)接口
// Integer key = node.getKey();
// String value = node.getValue();
// System.out.println(key+"="+key);
// }
//foreach//这种方式效率比较高,因为获取key和value都是直接从node对象中获取的属性值//这种方式比较适合大数据量for(Map.Entry<Integer,String> node:set){System.out.println(node.getKey()+"-->"+node.getValue());}}
}