Map集合
Map与Collection的关系
Map与Collection在集合框架中属并列存在
Map存储的是键值对
Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性
Map与Collection在集合框架中属并列存在
Map存储的是键值对
Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性
Map体系结构
Map和Set很像,Set底层就是使用了Map集合。Set中元素就想当与Map的key。
该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
Map有三个子类。
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。 此集合在jdk1.0时就存在,效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。 它将hashtable替代,jdk1.2时出现,效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排 序。
Map中的方法
1,添加
put(K key, V value) 新加入一对键值
putAll(Map<? extends K,? extends V> m)
此处用到泛型,意思是将一个Map集合加入到调用此方法的Map集合。这个新加入的Map集合
的键和值都是调用者的子类。
2,删除
clear() 删除所有键值对,
remove(Object key) 移除指定的键值对
3,判断
containsValue(Object value) 判断是否存在指定值的键值对。
containsKey(Object key) 判断是否存在指定键的键值对。
isEmpty() 判断是否为空
4,获取
get(Object key) 通过键获取值
size()
values() 返回值的集合。
entrySet() 返回一个Set,其中元素为一个键值对,在api中用Map.Entry表示
keySet() 返回一个Set,其中元素是Map的key
Map<String,String> map = new HashMap<String,String>(); //添加元素,添加元素,如果出现添加时,相同的键。那么后添加的值会覆盖原有键对应值。 //并put方法会返回被覆盖的值。 System.out.println("put:"+map.put("01","zhangsan1")); System.out.println("put:"+map.put("01","wnagwu")); map.put("02","zhangsan2"); map.put("03","zhangsan3"); System.out.println("containsKey:"+map.containsKey("022")); //System.out.println("remove:"+map.remove("02")); System.out.println("get:"+map.get("023")); map.put("04",null); System.out.println("get:"+map.get("04")); //可以通过get方法的返回值来判断一个键是否存在。通过返回null来判断。 //获取map集合中所有的值。 Collection<String> coll = map.values(); System.out.println(coll); System.out.println(map);
如果要遍历Map中的元素,有两种思路
由于Map中没有迭代器,也没有List中的角标,所以不能直接便利。可以根据Map与Set的关系,通过Set来间接便利。
第一种,因为Set中的元素相当于Map的键,所以可以通过keySet方法可以将Map中的键提取,放到一个Set集合中,然后通过遍历Set中的元素,并通过此元素调用Map的getValue方法获取Map的值,达到遍历Map的目的。
第二种,将Map中的一个键值对看做一个整体,通过entrySet方法将其当做Set中的一个元素,在api将其表示为Map.Entry。这样遍历Set集合时,每次获取一个Map.Entry,然后通过调用getKey和getValue方法,取得键和值。
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。之所以定义在Map内部,是因为只有键值对存在于Map集合内部,Map最清楚键值结构,并且能提供相关操作。
第一种,因为Set中的元素相当于Map的键,所以可以通过keySet方法可以将Map中的键提取,放到一个Set集合中,然后通过遍历Set中的元素,并通过此元素调用Map的getValue方法获取Map的值,达到遍历Map的目的。
第二种,将Map中的一个键值对看做一个整体,通过entrySet方法将其当做Set中的一个元素,在api将其表示为Map.Entry。这样遍历Set集合时,每次获取一个Map.Entry,然后通过调用getKey和getValue方法,取得键和值。
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。之所以定义在Map内部,是因为只有键值对存在于Map集合内部,Map最清楚键值结构,并且能提供相关操作。
import java.util.Collection; import java.util.HashMap; import java.util.Map; class MapDemo { public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); //添加元素,添加元素,如果出现添加时,相同的键。那么后添加的值会覆盖原有键对应值。 //并put方法会返回被覆盖的值。 System.out.println("put:"+map.put("01","zhangsan1")); System.out.println("put:"+map.put("01","wnagwu")); map.put("02","zhangsan2"); map.put("03","zhangsan3"); System.out.println("containsKey:"+map.containsKey("022")); //System.out.println("remove:"+map.remove("02")); System.out.println("get:"+map.get("023")); map.put("04",null); System.out.println("get:"+map.get("04")); //可以通过get方法的返回值来判断一个键是否存在。通过返回null来判断。 //获取map集合中所有的值。 Collection<String> coll = map.values(); System.out.println(coll); System.out.println(map); } }
import java.util.*; class MapDemo2 { public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("02","zhangsan2"); map.put("03","zhangsan3"); map.put("01","zhangsan1"); map.put("04","zhangsan4"); //将Map集合中的映射关系取出。存入到Set集合中。 Set<Map.Entry<String,String>> entrySet = map.entrySet(); Iterator<Map.Entry<String,String>> it = entrySet.iterator(); while(it.hasNext()) { Map.Entry<String,String> me = it.next(); String key = me.getKey(); String value = me.getValue(); System.out.println(key+":"+value); } /* //先获取map集合的所有键的Set集合,keySet(); Set<String> keySet = map.keySet(); //有了Set集合。就可以获取其迭代器。 Iterator<String> it = keySet.iterator(); while(it.hasNext()) { String key = it.next(); //有了键可以通过map集合的get方法获取其对应的值。 String value = map.get(key); System.out.println("key:"+key+",value:"+value); } */ } }
相关推荐
day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、递归 day09_字节流、字符流 day10_缓冲流、转换流、序列化流、Files day11_网络编程 day12_...
JAVA__MAP_+__LIST__SET和MAP的区别+_Map的三种遍历方法
应用JAVA编写的网络MAP系统,可以方便用户建立自己的地图网络系统!
Java_Technology_Concept_Map 最新的哟
Java_Technology_Concept_Map PDF to JPGE jpg格式
Java__Map集合.mp4
一个非常经典的java技术地图,值得一看
java technology content map
一个ive_map的小demo,通过打印像素值的变化帮助大家理解HI_MPI_IVE_Map这个函数
可以用m_map画世界地图(全球IGS站绘制代码)
Matlab中m_map包使用官方手册中文翻译,自己翻译并备注,实用性很高,适合新手入门学习m_map。
C++11 unordered_map与map(插入,遍历,Find)效率对比。
Java Map 集合类简介,Collection,Map,ArrayList
matlab地图工具包m_map的中文说明书,内含各种应用个例
END_MESSAGE_MAP宏的内部实现原理
下载的protos包里只有string_int_label_map.proto这个文件,没有string_int_label_map_pb2.py文件,运行时会出现错误。自己去生成pb2文件比较麻烦。上传的这个string_int_label_map_pb2.py本机可正常使用。
jdevice_id_map.bat.pdf
m_map使用方法详细介绍,采用matlab下载世界地图,可以获取海岸线等数据库
java_各个Map的区别 ConcurrentHashMap 支持检索的完全并发和更新的所期望可调整并发的哈希表。(线程安全)此类遵守与 Hashtable 相同的功能规范,并且包括对应于 Hashtable 的每个方法的方法版本。不过,尽管所有...