java--Map
来源:互联网 发布:yy协议软件 编辑:程序博客网 时间:2024/05/16 17:35
Map
Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。
map集合中存放就是映射关系。当数据之间存在这映射关系时,就要先想map集合。
Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
1,添加。
put(K key, V value) :添加元素,如果出现添加时,相同的键。那么后添加的值会覆盖原有键对应值。并put方法会返回被覆盖的值。
putAll(Map<? extends K,? extends V> m)
2,删除。
clear()
remove(Object key)
3,判断。
containsValue(Object value)
containsKey(Object key)
isEmpty()
4,获取。
get(Object key)
size()
values() :获取map集合中所有的值。
keySet()
entrySet()
map集合的两种取出方式:
1,Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。
2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。Entry其实就是Map中的一个static内部接口。
为什么要定义在内部呢?
因为只有有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。
Map
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
和Set很像。
其实大家,Set底层就是使用了Map集合。
示例:
import java.util.*;class Test{public static void main(String[] args) {System.out.println("----------------");Map<String,String> map=new HashMap<String,String>();System.out.println(map.put("01", "zhangsan01"));System.out.println(map.put("01", "zhangsan001"));map.put("02", "zhangsan02");map.put("03", "zhangsan03");System.out.println("map:"+map);System.out.println("map.containsKey(\"02\"):"+map.containsKey("02"));System.out.println("map.containsKey(\"09\"):"+map.containsKey("09"));System.out.println("map.containsValue(\"zhangsan03\"):"+map.containsValue("zhangsan03"));System.out.println("map.remove(\"02\"):"+map.remove("02"));System.out.println("map:"+map);System.out.println("map.get(\"03\")"+map.get("03"));System.out.println("----------------");map.put(null, "zhangsanNull");map.put("04", null);System.out.println("map.get(null)"+map.get(null));System.out.println("map.get(\"04\")"+map.get("04"));System.out.println("map:"+map);Collection<String> c=map.values();System.out.println("collection c:"+c);System.out.println("-----keySet-----");Set<String> s=map.keySet();System.out.println("keySet s:"+s);Iterator<String> it=s.iterator();while(it.hasNext()){String key=it.next();String value=map.get(key);System.out.println("key:"+key+" value:"+value);}System.out.println("----entrySet----");Set<Map.Entry<String,String>> e=map.entrySet();Iterator<Map.Entry<String,String>> t=e.iterator();while(t.hasNext()){Map.Entry<String,String> me=t.next();System.out.println("key:"+me.getKey()+" value:"+me.getValue());}}}结果:
null
zhangsan01
map:{01=zhangsan001, 02=zhangsan02, 03=zhangsan03}
map.containsKey("02"):true
map.containsKey("09"):false
map.containsValue("zhangsan03"):true
map.remove("02"):zhangsan02
map:{01=zhangsan001, 03=zhangsan03}
map.get("03")zhangsan03
----------------
map.get(null)zhangsanNull
map.get("04")null
map:{null=zhangsanNull, 04=null, 01=zhangsan001, 03=zhangsan03}
collection c:[zhangsanNull, null, zhangsan001, zhangsan03]
-----keySet-----
keySet s:[null, 04, 01, 03]
key:null value:zhangsanNull
key:04 value:null
key:01 value:zhangsan001
key:03 value:zhangsan03
----entrySet----
key:null value:zhangsanNull
key:04 value:null
key:01 value:zhangsan001
key:03 value:zhangsan03
map扩展:
import java.util.*;public class Test {public static void main(String[] args) {HashMap<String,List<Student>> czbk = new HashMap<String,List<Student>>();List<Student> reyu = new ArrayList<Student>();List<Student> jiuye = new ArrayList<Student>();czbk.put("yureban",reyu);czbk.put("jiuyeban",jiuye);reyu.add(new Student("01","zhagnsa"));reyu.add(new Student("04","wangwu"));jiuye.add(new Student("01","zhouqi"));jiuye.add(new Student("02","zhaoli"));Iterator<String> it = czbk.keySet().iterator();while(it.hasNext()){String roomName = it.next();List<Student> room = czbk.get(roomName);System.out.println(roomName);getInfos(room);}}public static void getInfos(List<Student> list){Iterator<Student> it = list.iterator();while(it.hasNext()){Student s = it.next();System.out.println(s);}}}class Student{private String id;private String name;Student(String id,String name){this.id = id;this.name = name;}public String toString(){return id+":::"+name;}}结果:
jiuyeban
01:::zhouqi
02:::zhaoli
yureban
01:::zhagnsa
04:::wangwu
- java Map Map.Entry
- java map
- java map
- Java - Map
- java map
- java Map
- java--Map
- Java Map
- Java Map
- Java-Map
- [Java] Map
- 【Java】Map
- Java-Map
- java .map()
- Java Map
- Java - Map
- Java - Map
- java MAP
- ASP.NET验证控件出现问题后的解决方案
- Android 自动化测试—robotium(一)环境
- open cv+C++错误及经验总结(十一)
- ***不在 sudoers 文件中。此事将被报告。
- 在虚拟和现实里游刃有余:增强现实技术
- java--Map
- OpenCV codebook模型实现背景减除
- 切勿妄谈Hadoop,以及4个数据管道打造实践
- 菜鸟学习Struts——总结
- Latent Semantic Analysis (LSA) Tutorial 潜语义分析LSA介绍 三
- cocos2d-x 通过JNI实现c/c++和Android的java层函数互调
- 一些国外的免费网站模板网站
- [accTC开发] 代码模块实现步骤的初步想法
- 关于 spring IOC容器的集成