黑马程序员——Map集合概述和特点
来源:互联网 发布:即时通讯软件 建群 编辑:程序博客网 时间:2024/04/28 11:23
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
Map集合概述和特点
Collection集合---Set List 它们都是单列集合
Map----------它是一个双列集合 它在存储时,是以key-value方式存储
Map集合是一个双列集合,它是以key-value键值对的方式存储,它的key值是唯一的。
Map是一个接口,它与Collection无关系,它们可以理解成并列。
Map集合的功能概述
我们学习Map主要学习其下两个实现类 HashMap TreeMap
Map集合的基本功能测试
package cn.itcast.map;import java.util.HashMap;import java.util.Map;//介绍Map中提供功能//1.添加操作 put// public Object put(Object key,Object value)// 参数: key value 要存储的键值对// 返回值:如果为null,代表key不重复,key-value存储了,如果不为null,代表key重复了,返回的是被替换元素。//2.删除// public void clear();//public Object remove(Object key)//作用:根据key解出 映射关系 返回的就是value值。//3.得到集合的长度//public int size();//4.判断操作// public boolean isEmpty()//public boolean containsKey(Object key) //判断是否包含指定的key值//public boolean containsValue(Object value) //判断是否包含指定的value值public class MapDemo2 {public static void main(String[] args) { //输入你要测试的方法。}// 1.存储 putpublic static void putTest() {Map<String, Integer> map = new HashMap<String, Integer>();System.out.println(map.put("张三", 10));map.put("李四", 20);map.put("王五", 30);System.out.println(map.put("张三", 100));System.out.println(map);}// 2.删除public static void clearTest() {Map<String, Integer> map = new HashMap<String, Integer>();map.put("李四", 20);map.put("王五", 30);map.clear();// 清空mapSystem.out.println(map);}// 3.removepublic static void removeTest() {Map<String, Integer> map = new HashMap<String, Integer>();map.put("李四", 20);map.put("王五", 30);System.out.println(map.remove("李四"));System.out.println(map);}// 4.判断public static void checkTest() {Map<String, Integer> map = new HashMap<String, Integer>();map.put("李四", 20);map.put("王五", 30);// 判断是否为空System.out.println(map.isEmpty());//判断是否包含指定的keySystem.out.println(map.containsKey("李四"));//判断是否包含指定的valueSystem.out.println(map.containsValue(20));System.out.println(map);}}
Map集合获取功能测试
package cn.itcast.map;import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;//Map集合获取功能测试//1.get//2.keySet//3.valuespublic class MapDemo3 {public static void main(String[] args) {<pre name="code" class="java"> //输入你要测试的方法。}// 1.getpublic static void getTest() {Map<String, String> map = new HashMap<String, String>();map.put("one", "aaa");map.put("two", "bbb");map.put("3", "ccc");String v1 = map.get("one1");System.out.println(v1);String v3 = map.get(3);System.out.println(v3);}// 2.keySetpublic static void keySetTest() {Map<String, String> map = new HashMap<String, String>();map.put("one", "aaa");map.put("two", "bbb");map.put("3", "ccc");Set<String> set = map.keySet();System.out.println(set);}// 3. valuespublic static void valuesTest() {Map<String, String> map = new HashMap<String, String>();map.put("one", "aaa");map.put("two", "bbb");map.put("3", "ccc");Collection<String> c = map.values();System.out.println(c);}}
Map集合的遍历之键找值
package cn.itcast.map;import java.util.HashMap;import java.util.Map;import java.util.Set;//Map集合的遍历之键找值//分析://1.使用Map.keySet方法得到所有的Set(所有的key)//2.遍历Set,就得到了每一个Key,在根据map.get(key),获取key对应的value.public class MapDemo4 {public static void main(String[] args) {//1.定义Map集合,装入数据Map<String, String> map = new HashMap<String, String>();map.put("one", "aaa");map.put("two", "bbb");map.put("3", "ccc");//2.得到所有的keySet<String> keys=map.keySet();//3.遍历keys这个Set集合,就得到了Map集合中所有的keyfor(String key:keys){//4.根据key获取对应的value.System.out.println("key:"+key+" value:"+map.get(key));}}}
Map集合的遍历之键值对对象找键和值
package cn.itcast.map;import java.util.HashMap;import java.util.Map;import java.util.Set;//关于Map集合中的entrySet方法;import static java.util.Map.*;public class MapDemo5 {public static void main(String[] args) {// 1.定义Map集合,装入数据Map<String, String> map = new HashMap<String, String>();map.put("one", "aaa");map.put("two", "bbb");map.put("3", "ccc");// 2.调用map集合的entrySet方法Set<Entry<String, String>> set = map.entrySet();// entrySet方法返回的是一个Set集合,而集合中的对象是Map.Entry类型,对于Entry,我们可以使用泛型来规范它,它的泛型就是Map集合的泛型for (Entry<String, String> en : set) { // 从Set集合中遍历出来的就是Map.Entry类型对象System.out.println(en.getKey() + " " + en.getValue()); // 可以通过Map.Entry的getKey,getValue,获取对应的key与value.}}}/* * Set<Map.Entry<K, V>> entrySet(); entrySet方法的返回值是Set集合,集合中的元素是 Map.Entry * * 通过查找源代码发现 Entry是一个接口,而这个接口是定义在Map接口中。 */
HashMap集合键是Student值是String的案例
Map集合的key是不重复的,
HashMap它怎样保证集合中的key的不重复?
HashMap集合相要保证它的key值不重复,与HashSet一样,都需要重写hashCode方法与equals方法.
package cn.itcast.hashmap;import java.util.HashMap;import java.util.Map;//HashMap集合键是Student值是String的案例public class HashMapDemo2 {public static void main(String[] args) {// 1.定义一个HashMap集合Map<Student, String> map = new HashMap<Student, String>();// 2.存储对象map.put(new Student(1, "张三"), "张三");map.put(new Student(2, "李三"), "李三");map.put(new Student(3, "赵三"), "赵三");map.put(new Student(3, "赵三"), "经三"); //如果没有重写Student类中的equals与hashCode,集合中有四个元素,如果存储了,集合中有三个元素// 3.遍历 keySet// for (Student s : map.keySet()) {// System.out.println(s + " " + map.get(s));// }// 4.遍历entrySetfor (Map.Entry<Student, String> en : map.entrySet()) {Student key = (en.getKey());String value = en.getValue();System.out.println(key + " " + value);}}}
HashMap与Hashtable的区别
1. HashMap是非同步,Hashtable是同步。HashMap的性能比Hashtable高
2. HashMap中允许存储null值null键 Hashtable中不允许
关于集合选择:
1. 存储时是直接存储值,还是以key-value存储。
Collection Map
2. 如果选择了Map集合
在实际开发中,对于Map集合,我们就选择HashMap,不使用TreeMap。
虽然TreeMap集合可以排序,但是在实际操作中,排序也不使用它。
TreeMap集合键是Student值是String的案例
package cn.itcast.treemap;import java.util.Comparator;import java.util.Map;import java.util.TreeMap;import cn.itcast.hashmap.Student;//TreeMap集合键是Student值是String的案例public class TreeMapDemo2 {public static void main(String[] args) {// 1.创建一个TreeMap// TreeMap<Student, String> map = new TreeMap<Student, String>();// 1.1 创建一个TreeMap,给其指定比较器TreeMap<Student, String> map = new TreeMap<Student, String>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getName().compareTo(o2.getName());}});// 2.添加元素map.put(new Student(11, "tom"), "tom");map.put(new Student(2, "fox"), "fox");map.put(new Student(3, "kobe"), "kobe");// 问题:程序运行是否会出现问题 java.lang.ClassCastException// 原因:对于TreeMap集合,它的key元素,必须具有自然顺序或者指定比较器。// 解决方案:1.给Student提供自然顺序 2.给TreeMap集合指定比较器// 3.遍历for (Map.Entry<Student, String> ent : map.entrySet()) {System.out.println(ent.getKey() + " " + ent.getValue());}}}
0 0
- 黑马程序员——Map集合概述和特点
- 黑马程序员—Map集合特点
- 黑马程序员——Set集合概述及特点
- Java_基础—Map集合概述和特点
- 黑马程序员——集合(一)--集合的数据结构、集合概述、Collection、遍历、List、Set、比较和排序、Map
- 黑马程序员—Map集合
- 黑马程序员—Map集合
- 黑马程序员——泛型和Map集合
- 黑马程序员——集合之Set和Map
- 集合框架Map概述和特点,Map集合的基本功能,Map集合的遍历,HashMap集合,
- 黑马程序员——集合框架概述
- 黑马程序员——集合概述
- 黑马程序员_08集合——Map
- 黑马程序员——Map集合
- 黑马程序员——Map集合
- 黑马程序员——MAP集合#
- 黑马程序员——Map集合
- 黑马程序员——集合框架Map
- 欢迎使用CSD横竖屏切换问题占位
- 如何获取微信用户的名字等信息
- l2 gre tunneling
- 黑马程序员---网络编程
- iOS 让对象伪装成一个字典
- 黑马程序员——Map集合概述和特点
- poj2773 Happy 2006
- 防火墙查看
- Leetcode190-Reverse Bits
- 使用fedora 21 的一些体验与感受
- 1002. 写出这个数 (20)
- 09课01节 u-boot-1.1.16编译补丁;
- ScrollView嵌套webview
- iOS 图片添加水印