黑马程序员--Java基础--05Map
2014-03-23 10:23
260 查看
----------------------Android培训、Java培训、java学习型技术博客、期待与您交流!
----------------------
Map接口:提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序
定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如
HashMap 类。
Map集合:该集合存储键值对。一对一对往里存,而且要保证键的唯一性。
|--Hashtable:底层是哈希表数据结构,不可以存入null键和null值。该集合是线程同步的。jdk1.0效率低。
|--HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。jdk1.2效率高
|--TreeMap:底层是二叉树数据结构,线程不同步。可以用于给Map集合中的键进行排序。
和Set很像。
其实大家,Set底层就是使用了Map集合
例子演示:
1,keySet:将map中所有的键存入到Set集合。因为Set具备迭代器。
所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
2,entrySet
例子演示:
所以可以通过迭代方式去除所有的键,再根据get()方法获取每一个键所对应的值。
Set<Map.Entry<K,Y>> entrySet():将Map集合中键与值之间的映射关系获取到Set集合中。
通过Map。Entry<K,V>接口中的K getKey()和 V getValue()方法分别获取键和值。
例子演示:
例子演示:
每一个学生都有对应的归属地。
学生student,地址String。
学生属性:姓名,年龄。
注意:姓名和年龄相同的视为同一个学生。
保证学生的唯一性。
1,描述学生
2,定义map容器。将学生作为键,地址作为值。存入。
3,获取map集合中的元素。
----------------------Android培训、Java培训、java学习型技术博客、期待与您交流!
----------------------
详细请查看:http://edu.csdn.net/
----------------------
Map接口:提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序
定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如
HashMap 类。
Map集合:该集合存储键值对。一对一对往里存,而且要保证键的唯一性。
1,添加 添加。 put(K key ,V value) put 2,删除 clear() remove(Object key) 3,判断。 containsValue(Object value) containsKey(Object key) isEmpty() 4,获取。 get(Object key) size() values() entrySet() keySet()Map:
|--Hashtable:底层是哈希表数据结构,不可以存入null键和null值。该集合是线程同步的。jdk1.0效率低。
|--HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。jdk1.2效率高
|--TreeMap:底层是二叉树数据结构,线程不同步。可以用于给Map集合中的键进行排序。
和Set很像。
其实大家,Set底层就是使用了Map集合
例子演示:
class MapDemo { public static void main(String[] args) { Map<String,String> map = new HashMap<String[] args> //添加元素,如果出现添加时,相同的键,那么后添加的值会覆盖原有键对应值 //并put方法会返回被覆盖的值。 System.out.println("put:"+map.put("01","zhangsan1")); System.out.println("put:"+map.put("01","wangwu")); map.put("02","zhangsan2"); map.put("03","zhangsan3"); System.out.println("containKey:"+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> col = map.values(); System.out.print(coll); System.out.print(map); } }map集合的两种取出方式:
1,keySet:将map中所有的键存入到Set集合。因为Set具备迭代器。
所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
2,entrySet
例子演示:
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("02","zhangsan3"); map.put("02","zhangsan1"); map.put("02","zhangsan4"); //只获取map集合的所有键的Set集合,keySet(); Set<String> keySet = map.keySet(); //有了Set集合,就可以获取其迭代器。 Iterator<String> it = keySet.iterater(); while(it.hasNext()) { String key = it.next(); //有了键可以通过map集合的get方法获取其对应的值。 String value = map.get(key); System.out.println("key:"+key); } } }Set<K> keySet():将Map中所有的键存入到Set集合中。因为Set具备迭代器,
所以可以通过迭代方式去除所有的键,再根据get()方法获取每一个键所对应的值。
Set<Map.Entry<K,Y>> entrySet():将Map集合中键与值之间的映射关系获取到Set集合中。
通过Map。Entry<K,V>接口中的K getKey()和 V getValue()方法分别获取键和值。
例子演示:
import java.util.*; class KeySet_EntrySet { public static void main(String[] args) { Map<Integer,String> map1 = new HashMap<Integer,String>(); //向Map集合中添加键值对。 map1.put(1,"abc"); map1.put(2,"bcd"); map1.put(3,"cde"); map1.put(4,"def"); map1.put(5,"efg"); map1.put(6,"fga"); //获取Map集合中所有键的Set集合 Set<Integer> keySet = map1.keySet(); //通过迭代器获取键,并通过get方法获取键对应的值 for(Iterator<Integer> it = keySet.iterator(); it.hasNext();) { Integer key = it.next(); String value = map1.get(key); System.out.println("key:"+key+".."+"value:"+value); } /* 运行结果: key:1..value:abc key:2..value:bcd key:3..value:cde key:4..value:def key:5..value:efg key:6..value:fga */ Map<String,Integer> map2 = new HashMap<String,Integer>(); //向Map集合中添加键值对。 map2.put("abc",123); map2.put("bcd",234); map2.put("cde",345); map2.put("def",456); map2.put("efg",567); map2.put("fga",678); //将Map集合中键与值之间的映射关系取出到Set集合中 Set<Map.Entry<String,Integer>> entrySet = map2.entrySet(); for(Iterator<Map.Entry<String,Integer>> it = entrySet.iterator(); it.hasNext();) { Map.Entry<String,Integer> me = it.next(); String key = me.getKey(); Integer value = me.getValue(); System.out.println("key:"+key+".."+"value:"+value); } /* 运行结果: key:fga..value:678 key:abc..value:123 key:def..value:456 key:bcd..value:234 key:efg..value:567 key:cde..value:345 */ } }
例子演示:
每一个学生都有对应的归属地。
学生student,地址String。
学生属性:姓名,年龄。
注意:姓名和年龄相同的视为同一个学生。
保证学生的唯一性。
1,描述学生
2,定义map容器。将学生作为键,地址作为值。存入。
3,获取map集合中的元素。
class Student implements Comparable<Student> { private String name; private int age; Student(String name,int age) { this.name=name; this.age=age; } public int compareTo(Student s) { int num = new Integer(this.age).compareTo(new Integer(s.age)); if (num==0) return this.name.compareTo(s.name); return num; } public int hashCode() { return name.hashCode()+age*34; } public boolean equals(Object obj) { if (!(obj instanceof Student)) throw new ClassCastException("类型不匹配"); Student s=(Student)obj; return this.name.equale(s.name)&&this.age==s.age; } public String getName() { return name; } public int getAge() { return age; } public String toString() { return name+":"+age; } class MapTest { public static void main(String[] args) { HashMap<Student,String> hm =new HashMap<Student,String>(); hm.put(new Student("lisi1",21),"beijing"); hm.put(new Student("lisi1",21),"tianjing"); hm.put(new Student("lisi2",21),"sahnghai"); hm.put(new Student("lisi3",21),"nanjing"); hm.put(new Student("lisi4",21),"shandong"); //第一种取出方式 keySet Set<Student> keySet = hm.keySet(); Iterator<Student> it = keySet.iterator(); while(it.hasNext()) { Student stu = it.next(); String addr = hm.get(stu); System.out.println(stu+".."+addr); } //第二种取出方式entrySet Set<Map.Entry<Student,String>> entrySet.iterator(); Iterator<Map.Entry<Student,String>> iter = entrySet.iterator(); while (iter.hasNext()) { Map.Entry<Sudent,String> me = iter.next(); student stu = me.getkey(); String addr = hm.get(stu); System.out.println(stu+"......"+addr); } } }
----------------------Android培训、Java培训、java学习型技术博客、期待与您交流!
----------------------
详细请查看:http://edu.csdn.net/
相关文章推荐
- 黑马程序员-java基础-List集合的特有功能
- 黑马程序员--java基础2
- 黑马程序员——Java基础---反射
- 『黑马程序员』---java--基础加强--反射+内省
- 黑马程序员 java基础之正则表达式
- 黑马程序员_java基础知识(5)枚举的简单理解
- 黑马程序员——Java基础语法总结
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员———Java基础——Java开发环境搭建
- 黑马程序员_Java基础总结
- 黑马程序员_JAVA基础之末尾
- 黑马程序员—【Java基础 篇】之集合
- 黑马程序员——java第三天:基础语法(三元运算符,while、switch、for语句)
- 黑马程序员——Java基础---面向对象(一)
- 黑马程序员_Java基础_我的Day24学习笔记
- 黑马程序员_java基础视频第20天_JavaIO流续2
- 黑马程序员——Java基础---异常
- 黑马程序员----java基础加强(1)
- 黑马程序员_Java基础_面向对象(异常2、练习题、导包)
- 黑马程序员 Java自学总结二 Java语言的基础组成