黑马程序员---Java基础---双列集合Map(接口)
来源:互联网 发布:论坛发帖推广软件 编辑:程序博客网 时间:2024/05/16 14:18
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、Map接口概述:
双列集合:在存储时,同时指定两个字段;一个做"键",一个做"值"(键值对)
将键映射到值的对象
一个映射不能包含重复的键
每个键最多只能映射到一个值
Map接口和Collection接口的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构值针对键有效,跟值无关
Collection集合的数据结构是针对元素有效
二、Map接口成员方法:
V put(K key,V value) :向集合中添加"键值对",如果发生重复的键,将用新值替换原值,并将原值返回;
V remove(Object key):移除key所指定的"键值对"
void clear():清空集合
boolean containsKey(Object key):判断是否包含指定key
boolean containsValue(Object value):判断是否包含指定的value
boolean isEmpty():判断集合是否为空
int size():集合中"键值对"的数量
package cn.hebei.sjz_Map基本功能;import java.util.HashMap;import java.util.Map;/* * Map接口的成员方法 */public class Demo1 {public static void main(String[] args) {Map<String, String> map = new HashMap<>();// 填充元素map.put("it01", "xu");map.put("it02", "zhao");map.put("it03", "le");System.out.println(map);// {it02=zhao,it01=xu,it03=le}// 替换原it02对应的值map.put("it02", "oahz");System.out.println(map);// {it02=oahz,it01=xu,it03=le}// 移除it01System.out.println(map.remove("it01"));// xuSystem.out.println(map);// {it02=oahz,it03=le}// 判断集合是否包含键it01System.out.println(map.containsKey("it01"));// false// 判断是否包含键it02System.out.println(map.containsKey("it02"));// true// 判断是否包含值leSystem.out.println(map.containsValue("le"));// true}}
三、Map接口的获取功能:
V get(Object key):使用指定key查找对应"值"
Set<K> keySet():获取所有的"键"的集合(Set集合)
Collection<V> values():获取所有"值"的集合(Collection集合)
Set<Map.Entry<K,V>> entrySet():返回所有的"键值对-对象";Entry是Map的内部类; 一个Entry内部封装了一个"键"和一个"值"
package cn.hebei.sjz_Map基本功能;import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;/* * Map接口的获取功能 */public class Demo2 {public static void main(String[] args) {// 实例化一个MapMap<String, String> map = new HashMap();// 填充元素map.put("it01", "xu");map.put("it02", "zhao");map.put("it03", "le");// 获取it03对应的值System.out.println(map.get("it03"));// leSet<String> keys = map.keySet();// 遍历键的集合for (String key : keys) {System.out.println(key + "," + map.keySet());}Collection<String> values = map.values();// 遍历所有值的集合for (String value : values) {System.out.println(value);}Set<Map.Entry<String, String>> entrySet = map.entrySet();// 遍历所有的键值对for (Map.Entry<String, String> m : entrySet) {String key = m.getKey();String value = m.getValue();System.out.println(key + "," + value);}}}
方式1:根据键找值
获取所有键的集合:keySet
遍历键的集合,获取到每一个键:迭代器或增强for
根据键找值
方式2:根据键值对对象找键和值
获取所有键值对对象的集合
遍历键值对对象的集合,获取到每一个键值对对象
根据键值对对象找键和值
package cn.hebei.sjz_Map基本功能;import java.util.HashMap;import java.util.Map;import java.util.Set;/* * Map接口的遍历方式 */public class Demo3 {public static void main(String[] args) {Map<String, String> map = new HashMap<>();// 填充元素map.put("it01", "xu");map.put("it02", "zhao");map.put("it03", "le");// 遍历方式一Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key + "," + map.get(key));}// 遍历方式二Set<Map.Entry<String, String>> entrySet = map.entrySet();for (Map.Entry<String, String> m : entrySet) {String key = m.getKey();String value = m.getValue();System.out.println(key + "," + value);}}}
键是哈希表结构,可以保证键的唯一性
1、HashMap集合键是String值是Student的案例:
package cn.hebei.sjz_HashMap;import java.util.HashMap;import java.util.Map;import java.util.Set;/* * HashMap集合键是String值是Student的案例: */public class Demo {public static void main(String[] args) {Map<String, Student> map = new HashMap();// 填充元素map.put("it01", new Student("xu", 23));map.put("it02", new Student("zhao", 24));map.put("it03", new Student("le", 23));// 遍历Set<String> keys = map.keySet();for (String key : keys) {Student s = map.get(key);System.out.println("键" + key + "," + "值" + s.name + "," + s.age);}}}
2、HashMap集合键是Student值是String的案例:
package cn.hebei.sjz_HashMap;import java.util.HashMap;import java.util.Map;import java.util.Set;/* * HashMap集合键是Student值是String的案例 */public class Demo1 {public static void main(String[] args) {Map<Student, String> map = new HashMap();// 填充集合map.put(new Student("xu", 23), "it01");map.put(new Student("zhao", 24), "it02");map.put(new Student("le", 23), "it03");// 遍历Set<Map.Entry<Student, String>> entrySet = map.entrySet();for (Map.Entry<Student, String> e : entrySet) {Student stu = e.getKey();String value = e.getValue();System.out.println("键" + stu.name + "," + stu.age + "值" + value);}}}
Map 接口的哈希表(保证唯一)和链接列表(保证顺序)实现,具有可预知的迭代顺序。
package cn.hebei.sjz_LinkedHashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;/* * LinkedHashMap的概述和使用 */public class Demo {public static void main(String[] args) {// 实例化一个LinkedHashMapMap<String, String> map = new LinkedHashMap<>();// 填充集合map.put("it01", "xu");map.put("it02", "zhao");map.put("it03", "le");// 遍历集合Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key + "," + map.get(key));// 取出时和存入的是一样的顺序}}}
键是红黑树结构,可以保证键的排序和唯一性
1、TreeMap集合键是String值是String的案例
package cn.hebei.sjz_TreeMap;import java.util.Set;import java.util.TreeMap;/* * TreeMap集合键是String值是String的案例 */public class Demo {public static void main(String[] args) {// 实例化一个TreeMapTreeMap<String, String> map = new TreeMap();// 填充集合map.put("it01", "xu");map.put("it02", "zhao");map.put("it03", "le");// 遍历集合Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key + "," + map.get(key));}}}
2、TreeMap集合键是Student值是String的案例
package cn.hebei.sjz_TreeMap;import java.util.Comparator;import java.util.Map;import java.util.Set;import java.util.TreeMap;/* * TreeMap集合键是Student值是String的案例 */public class Demo1 {public static void main(String[] args) {// 实例化一个TreeMapTreeMap<Student, String> map = new TreeMap(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {int n1 = o1.name.compareTo(o2.name);int n2 = n1 == 0 ? (o1.age - o2.age) : n1;return n2;}});// 填充集合map.put(new Student("xu", 23), "it01");map.put(new Student("zhao", 24), "it02");map.put(new Student("le", 23), "it03");// 遍历集合Set<Map.Entry<Student, String>> entrySet = map.entrySet();for (Map.Entry<Student, String> e : entrySet) {Student stu = e.getKey();String value = e.getValue();System.out.println("键" + stu.name + "," + stu.age + "值" + value);}}}
1.Hashtable:
1).不能存储null键和null值;
2).从1.0版本开始;
3).线程安全的(同步),效率低;
2.HashMap:
1).可以存储null键和null值;
2).从1.2版本开始;
3).线程不安全的(不同步),效率高;
package cn.hebei.sjz_HashMap;import java.util.HashMap;import java.util.Hashtable;import java.util.Map;/* * HashMap和Hashtable的区别 */public class Demo2 {public static void main(String[] args) {// 实例化一个HashtableMap<String, String> map = new Hashtable();// 填充集合map.put("it01", "xu");// map.put(null, "zhao");//空指针异常// map.put("it03", null);//空指针异常// 实例化一个HashMapMap<String, String> map1 = new HashMap();// 填充集合map1.put("it1", "xu");map1.put(null, "zhao");map1.put("it3", null);}}
- 黑马程序员---Java基础---双列集合Map(接口)
- 黑马程序员——java基础——集合框架(二: 双列集合 (Map体系))
- 黑马程序员-Java基础:集合(双列集合)
- 黑马程序员-----Map双列集合
- 黑马程序员——集合框架(双列集合:Map接口)
- 黑马程序员-java基础之Map集合
- 黑马程序员:Java基础总结----Map集合
- 黑马程序员 java基础之Map集合
- 黑马程序员java基础之Map集合
- 黑马程序员---Java基础---Map集合
- 黑马程序员 java基础--map集合总结
- 黑马程序员----------------java基础-----------------Map集合
- 黑马程序员----java基础之Map集合
- 黑马程序员-------Java基础-------集合之Map
- 黑马程序员-Java基础:集合(Map)
- 黑马程序员-java基础-Map集合
- 黑马程序员--java基础--集合框架Set,集合框架map
- 黑马程序员--Map集合基础
- 3种常用系统制作ubuntu U盘安装盘
- Android 权限设置大全
- 似于印象笔记Evernote生活类iOS应用源码
- java导出word(Freemarker)
- 有关java内存泄露
- 黑马程序员---Java基础---双列集合Map(接口)
- oc中new和init的区别
- iOS基础: navigationController.popToViewController的使用
- 前进道路上的收获历程
- Python学习笔记(3):web初步
- 23种设计模式C++实例之代理模式
- Mac新手——文件存放
- Objective-c语言_不可变字典
- SQL * Loader详解