提示:Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。
1.map接口实现类对象HashMap
代码:
//HashMap<>,泛型进行限制,限制集合存入的引用数据类型(自定义)
//2种写法实现的效果一样
Map<Integer, String> map=new HashMap <>();
Map<Integer, String> map1=new HashMap <Integer, String>();
2.Map常用的方法
1、put()、size()、remove()、get()
//Map<Integer, String> map=new HashMap <>();
Map<Integer, String> map1=new HashMap <Integer, String>();
//集合中添加数据 put
map1.put(1,"2");
map1.put(2,"3");
map1.put(2,"5");
System.out.println(map1.size());//获取集合长度
System.out.println(map1);//遍历集合中所有数据
//get根据key获取value值
String s=map1.get(1);
System.out.println(s);
//remove根据key删除value值
System.out.println("------------");
String str=map1.remove(1);
System.out.println(str);
System.out.println(map1);
2、isEmpty()判断
Map<Integer, String> map1=new HashMap <Integer, String>();
map1.put(1,"li");
map1.put(2,"li");
map1.put(3,"li");
map1.put(4,"li");
map1.put(5,"li");
System.out.println(map1.isEmpty());//判断集合是否为空返回boolen值
2、keySet()获取map中所有的key值
Map<Integer, String> map1=new HashMap <Integer, String>();
map1.put(1,"li1");
map1.put(2,"li2");
map1.put(3,"li3");
map1.put(4,"li4");
map1.put(5,"li5");
//keySet--获取map所有key值返回Set<Integer>
Set<Integer> set=map1.keySet();
//遍历所有key值
for (Integer s:set
) {
System.out.println(s);
}
结果
1
2
3
4
5
3、values()获取value值
Map<Integer, String> map1=new HashMap <Integer, String>();
map1.put(1,"li1");
map1.put(2,"li2");
map1.put(3,"li3");
map1.put(4,"li4");
//获取有value值
Collection<String> str= map1.values();
for(String string:str){//遍历
System.out.println(string);
}
结果
li1
li2
li3
li4
4、keySet()和get()结合使用
Map<Integer, String> map1=new HashMap <Integer, String>();
map1.put(1,"li1");
map1.put(2,"li2");
map1.put(3,"li3");
map1.put(4,"li4");
//keySet--获取map所有key值
Set<Integer> set=map1.keySet();//获取所有的key
//遍历所有key值
for (Integer s:set//
) {
System.out.println(map1.get(s));//根据key获取values
}
结果
li1
li2
li3
li4
5、HashMap和HashTable的区别
HashMap可以保存null、HashTable不能
Map<Integer, String> map1=new HashMap <Integer, String>();
System.out.println(map1.put(null, "123"));
结果:null
Map<Integer, String> map=new Hashtable <Integer, String>();
System.out.println(map.put(null, "123"));
结果: Exception in thread “main” java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:465)
at hyh.MapTest.main(MapTest.java:11)
总结
map常用方法
V put(K key, V value) 向Map集合中添加键值对
V get(Object key) 通过key获取value
void clear() 清空Map集合
boolean containsKey(Object key) 判断Map中是否包含某个key
boolean containsValue(Object value) 判断Map中是否包含某个value
boolean isEmpty() 判断Map集合中元素个数是否为0
V remove(Object key) 通过key删除键值对
int size() 获取Map集合中键值对的个数
Collection<V> values() 获取Map集合中所有的value,返回一个Collection
Set<K> keySet() 获取Map集合所有的key(所有的键是一个set集合)
Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
Map集合通过entrySet()方法转换成的这个Set集合,Set集合中元素的类型是 Map.Entry<K,V>(可以理解为一个对象);Map.Entry是静态内部类,是Map中的静态内部