黑马程序员——Java集合框架(3)

来源:互联网 发布:为什么要过年呢 知乎 编辑:程序博客网 时间:2024/05/17 04:12

Map存储键值对,一对一对的往里存,并且键是唯一的。Map集合有三个实现类:

Map : Hashtable 底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的。

          HashMap 底层是哈希表数据结构,允许使用null值和null键,是不同步的,效率高。

          TreeMap 底层是二叉树结构,线程不同步,可以用于给Map集合中的键进行排序。

 

Map集合常用的共性方法:

1,添加。
put(key,value):当存储的键相同时,新的值会替换老的值,并将老值返回。如果键没有重复,返回null。
void putAll(Map);

import java.util.*;public class map_put {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();Map<String,String> map1=new HashMap<String,String>();//put(),相同的键,后面的值会覆盖前面的值,并且put()方法会返回被覆盖的值map.put("01", "张三");map.put("02", "李四");System.out.println("覆盖返回值:"+map.put("01", "王五"));System.out.println("map:"+map);map1.put("03", "赵六");//putAll()map.putAll(map1);System.out.println("map:"+map);}} 

输出结果:

覆盖返回值:张三
map:{01=王五, 02=李四}
map:{01=王五, 02=李四, 03=赵六}


2,删除。
void clear():清空
value remove(key) :删除指定键。

import java.util.*;public class map_clear {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("01", "张三");map.put("02", "李四");map.put("03", "王五");System.out.println("map:"+map);//value remove(key) :删除指定键map.remove("02");System.out.println("删除指定键后的map:"+map);//void clear():清空 map.clear();System.out.println("清空后map"+map);}}

输出结果:

map:{01=张三, 02=李四, 03=王五}
删除指定键后的map:{01=张三, 03=王五}
清空后map{}


3,判断。
boolean isEmpty():
boolean containsKey(key):是否包含key
boolean containsValue(value) :是否包含value

import java.util.*;public class map_contains {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("01", "张三");map.put("02", "李四");map.put("03","王五");System.out.println("isEmpty:"+map.isEmpty());System.out.println("containsKey:"+map.containsKey("02"));System.out.println("containsValue:"+map.containsValue("王五"));}}

输出结果:

isEmpty:false
containsKey:true
containsValue:true

4,取出。
int size():返回长度
value get(key) :通过指定键获取对应的值。如果返回null,可以判断该键不存在。当然有特殊情况,就是在hashmap集合中,是可以存储null键null值的。
Collection values():获取map集合中的所有的值。

 

import java.util.*;public class map_get {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("01", "张三");map.put("02", "李四");map.put("03","王五");System.out.println("size:"+map.size());//value get(key)通过指定键获取对应的值。如果返回null,可以判断该键不存在System.out.println("get:"+map.get("02"));//Collection values():获取map集合中的所有的值。Collection<String> coll=map.values();System.out.println("values:"+coll);}}

输出结果:

size:3
get:李四
values:[张三, 李四, 王五]

5,想要获取map中的所有元素:
原理:map中是没有迭代器的,collection具备迭代器,只要将map集合转成Set集合,可以使用迭代器了。
之所以转成set,是因为map集合具备着键的唯一性,其实set集合就来自于map,set集合底层其实用的就是map的方法。

把map集合转成set的方法:
Set<k> keySet();  将map中所有的键存到Set集合。
Set<k,value> entrySet();//取的是键和值的映射关系。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方式一:keySet()方法

import java.util.*;public class map_keyset {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("01", "张三");map.put("02", "李四");map.put("03","王五");Set keySet=map.keySet();Iterator it=keySet.iterator();while(it.hasNext()){Object key=it.next();Object value=map.get(key);System.out.println(key+":"+value);}}}


输出结果:

01:张三
02:李四
03:王五

 

方式二:entrySet()方法

import java.util.*;public class map_entryset {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("01", "张三");map.put("02", "李四");map.put("03","王五");Set<Map.Entry<String,String>> entrySet=map.entrySet();Iterator<Map.Entry<String,String>> it=entrySet.iterator();while(it.hasNext()){Map.Entry me=(Map.Entry)it.next();System.out.println(me.getKey()+":"+me.getValue());}}} 

输出结果:

01:张三
02:李四
03:王五



 

0 0