java基础之HashMap和TreeMap

上传人:cn****1 文档编号:477097496 上传时间:2022-11-10 格式:DOC 页数:14 大小:116KB
返回 下载 相关 举报
java基础之HashMap和TreeMap_第1页
第1页 / 共14页
java基础之HashMap和TreeMap_第2页
第2页 / 共14页
java基础之HashMap和TreeMap_第3页
第3页 / 共14页
java基础之HashMap和TreeMap_第4页
第4页 / 共14页
java基础之HashMap和TreeMap_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《java基础之HashMap和TreeMap》由会员分享,可在线阅读,更多相关《java基础之HashMap和TreeMap(14页珍藏版)》请在金锄头文库上搜索。

1、Map集合概述:?/* Map: K (key)- 此映射所维护的键的类型 V (Value)- 映射值的类型 Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性 */ package map; import java.util.*; class MapDemo public static void main(String args) /测试LinkedHashMap-存入顺序和取出顺序一致 /此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序) LinkedHashMaplm = new LinkedHashMap(); lm.put(1,abc);

2、 lm.put(2,bcd); lm.put(3,abc); lm.put(4,abcd); lm.put(5,abc); System.out.println(lm); lm.put(5,defg); System.out.println(lm); /* 重要的实现类: Hashtables:底层是哈希表数据结构,不可以存入null键null值.HashTable是线程同步的.效率低 JDK 1.0 为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。 HashMap:底层是哈希表数据结构,可以存入null键null值.HashMap是线程

3、非同步的.效率高 JDK1.2 依然需要实现hashCode和equals TreeMap:底层是红黑树(自平衡二叉查找树)数据结构.线程不同步. 可以用于给map集合中的键(Key)进行排序和Set很像. 其实,set底层就是使用了Map集合 HashSet 底层用到了 HashMap 很好解释了为什么要复写hashCode和equals TreeSet 底层用到了 TreeMap 而TreeMap运用的就是红黑树 */Map常用操作:?/*一些常用操作:.添加V put(K key, V value)将指定的值与此映射中的指定键关联(可选操作)。void putAll(Map m)从指定映

4、射中 将所有映射关系 复制到此映射中(可选操作)。.删除void clear()V remove(Object key)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。.判断boolean containsKey(Object key)如果此映射包含 指定键的映射关系,则返回true.boolean containsValue(Object Value)如果此映射将 一个或多个键映射到指定值 ,则返回true.获取V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。int size()返回此映射中的 键-值映射 关系数。Coll

5、ection values()返回此映射中包含的值(Value)的 Collection 视图。SetMap.Entry entrySet()返回此映射中包含的映射关系的 Set 视图。 Set keySet()返回此映射中包含的键的 Set 视图。*/package map;import java.util.*;class MapDemo2public static void print(Object obj)System.out.println(obj);public static void main(String args)Map map = new HashMap();/添加元素pri

6、nt(put +map.put(01,zhangsan);/null 原来HashMap中没有01对应的value-返回nullprint(put +map.put(01,heihei);/zhangsan 返回旧的01对应的heihei,并且把01对应的zhangsan替换掉(保证key唯一性)/*也就是说,在添加时,新的key=value与旧的key=value出现key相同-新value会覆盖旧value,并且返回旧value.*/map.put(02,Lisi);map.put(03,wangwu);print(containsKey: +map.containsKey(04);/fa

7、lseprint(remove04: +map.remove(04);/nullprint(remove02: +map.remove(02);/Lisiprint(map);/01=zhangsan,03=wangwu/依然元素转换成字符串形式输出,使用的是AbstractMap中的toString();/注意打印顺序和存入顺序可能不同-底层使用的为哈希表/获取print(get01: +map.get(01);/zhangsanprint(get04: +map.get(04);/nullmap.put(null,maliu);/虽然可以加入,但没有意义map.put(04,null);/

8、同上/可以通过get方法的返回值来判断一个键是否存在,返回是否为null判断Collection coll = map.values();print(coll);print(map);entrySet()与keySet()?/*怎样将Map中所有value,Key取出?.Set keySet()将Map中所有的Key存入到Set集合.因为set集合具备迭代器.利用迭代器取出Key,根据Map中的get方法,获取每一个键对应的值.Map集合的取出原理:将map集合转成set集合,在通过迭代器取出(画一个示意图).SetMap.Entry entrySet()将map结合中的映射关系存入到了set

9、集合中,而这个关系的数据类型就是Map.Entry(画一个示意图)Map.Entry:表示Map中的关系类型而Map.Entry:指定关系中Key和Value的操作类型SetMap.Entry:泛型嵌套老毕经典比喻:(霸气侧漏(*_*)假如存入的键值对为丈夫和妻子(当然了一夫一妻制:一个丈夫对应一个妻子)keySet:把Map中的丈夫取出来放在Set-通过丈夫找出对应的妻子entrySet:把Map中的丈夫和妻子的关系取出来(假设为结婚证)-存放在Set中-通过结婚证,结婚证上有丈夫和妻子啊(Map.Entry)-调用结婚证特有方法(getKey,getValue)-获取到丈夫和妻子*/pac

10、kage map;import java.util.*;class MapDemo3public static void main(String args)Map map = new HashMap();map.put(02,zhang);map.put(03,wang);map.put(04,xu);/获取map集合中所有key的Set集合Set s = map.keySet();/Set里面指明key的泛型,因为获取的是key的集合for(Iteratorit = s.iterator();it.hasNext();)System.out.println(map.get(it.next()

11、;/entrySet方法,注意用的HashMap存入和取出的顺序不一定一致SetMap.Entry s2= map.entrySet();for(IteratorMap.Entry it2 = s2.iterator();it2.hasNext(); )Map.Entry me=it2.next();System.out.println(me.getKey()+.+me.getValue();/*分析Map.Entry:其实Entry也是一个接口,它是Map接口中的一个内部接口.src中:/接口经过编译后生成.class文件,可以类比下 内部类public interface Mappubli

12、c static interface EntryK getKey();V getValue();V setValue(V value);为什要把Entry定义在Map内部?Entry表示Map中Key与Value的关系,其实Key和Value被封装在了Entry类(HashMap中一个内部类实现了Map中的Entry接口)中.static class Entry implements Map.Entryfinal K key;V value;Entry next;int hash;Entry(int h, K k, V v, Entry n) value = v;next = n;key =

13、k;hash = h;public final K getKey() return key;public final V getValue() return value;public final V setValue(V newValue) V oldValue = value;value = newValue;return oldValue;.*/HashMap集合示例:?/*每一个学生都有对应的归属地学生Student,地址String.学生属性:姓名和年龄相同的视为同一个学生保证学生的唯一性*/描述学生/注意这里需要存入到HashMap中/之前HashSet之所以需要复写hashCode和equals/因为底层用的其实是HashMap(更确切的说是哈希表)/为了能够实现对哈希表中的元素进行存储和获取-用作Key的对象需要复写这两个方法/要想存入到HashMap中,更需要复写package map;import java.util.*;class Student implements Comparable/如果Studet继承Person使用Person扩展性更好private String name;private int age;Student(String name,int age)this.name=name;t

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号