Java_Map
创始人
2024-01-30 00:38:17
0

字典(Map)

概述

在这里插入图片描述

HashMap

定义方法

public static void main(String[] args) {// HashMap Map = new HashMap(); // 定义方法一Map map = new HashMap(); // 定义方法二// map没有add方法map.put(1, "LiHua");map.put(2, "zhanghua");map.put(3, "huanghuan");System.out.println(map);/*{1=LiHua, 2=zhanghua, 3=huanghuan}*/}

常用方法

在这里插入图片描述

put()与remove()

public static void main(String[] args) {// HashMap Map = new HashMap(); // 定义方法一Map map = new HashMap();// map没有add方法map.put(1, "LiHua");map.put(2, "zhanghua");map.put(3, "huanghuan");System.out.println(map);/*{1=LiHua, 2=zhanghua, 3=huanghuan}*/map.remove(1);map.remove(100);System.out.println(map);/*{2=zhanghua, 3=huanghuan}*/		}

containsKey()与containsValue()

public static void main(String[] args) {// HashMap Map = new HashMap(); // 定义方法一Map map = new HashMap();// map没有add方法map.put(1, "LiHua");map.put(2, "zhanghua");map.put(3, "huanghuan");System.out.println(map);/*{1=LiHua, 2=zhanghua, 3=huanghuan}*/System.out.println(map.containsKey(2));/*true*/map.remove(1);map.remove(100);System.out.println(map);/*{2=zhanghua, 3=huanghuan}*/		System.out.println(map.containsValue("LiHua"));/*false*/}

V get(Key) 与 V getOrDefault(Key, DefaultValue)

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");// get() 方法通过key值来获取value值System.out.println(map.get(1));/*Lihua*/// getOrDefault()  如果没有找到key 那么返回的value值就用第二个参数代替System.out.println(map.getOrDefault(4, "hahaha"));/*hahaha*/}

Set keySet

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");// keySet() 返回key值的集合System.out.println(map.keySet());/*[1, 2, 3]*/}

Collection values() 返回此字典中包含的Collection视图

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(50, "zhangsan");tmap.put(66, "zhangming");System.out.println(tmap);System.out.println(tmap.values());/*{1=dagu, 2=xiaolong, 45=xidong, 50=zhangsan, 66=zhangming, 100=liming}*//*[dagu, xiaolong, xidong, zhangsan, zhangming, liming]*/}

**V remove(Oject key) ** 返回删除的key对应的value

boolean remove(Object key, Object value) 删除成功的话返回true

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");System.out.println(map.remove(1));/*Lihua*/System.out.println(map.remove(1));/*null*/System.out.println(map.remove(2, "Zhanghua"));/*true*/System.out.println(map.remove(2, "Zhanghua"));/*false*/}

V replace(K key, V value) 把key对应的value换成新的

boolean replace(K key, V oldValue, V newValue)

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");System.out.println(map.replace(1, "xiaolizi")); /*Lihua*/System.out.println(map);/*{1=xiaolizi, 2=Zhanghua, 3=xiaozhang}*/System.out.println(map.replace(2, "Zhanghua", "daxiong")); /*true*/System.out.println(map.replace(2, "Zhanghua", "daxiong")); /*false*/  // 这里这个value指定错误 然后就不可以换成功System.out.println(map);/*{1=xiaolizi, 2=daxiong, 3=xiaozhang}*/}

Set> entrySet() 返回的是这个字典对应的键值对的集合

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");System.out.println(map.entrySet()); // 这里返回的是一个Set集合// 类型是Set>/*[1=Lihua, 2=Zhanghua, 3=xiaozhang]*/}

遍历方法

方式一

在这里插入图片描述

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");for(Integer i : map.keySet()){System.out.println(i + " " + map.get(i));}		/*1 Lihua2 Zhanghua3 xiaozhang*/}

方式二

在这里插入图片描述

public static void main(String[] args) {HashMap map = new HashMap();map.put(1, "Lihua");map.put(2, "Zhanghua");map.put(3, "xiaozhang");for (Map.Entry me: map.entrySet()){System.out.println(me.getKey() + " " + me.getValue());			}/** 1 Lihua2 Zhanghua3 xiaozhang* */}

LinkedHashMap

在这里插入图片描述

定义方法

public static void main(String[] args) {Map linkmap = new LinkedHashMap<>();linkmap.put(1, "lihua");linkmap.put(2, "zhanghua");linkmap.put(3, "xiaobizhaizi");	System.out.println(linkmap);/*{1=lihua, 2=zhanghua, 3=xiaobizhaizi}*/}

常用方法

和HashMap一样

遍历方法

和HashMap一样

TreeMap

在这里插入图片描述

定义方法

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");// 默认按照key升序排列System.out.println(tmap);/*{1=dagu, 2=xiaolong, 100=liming}*/}

常用方法

**在HashMap的基础上多一些 **

Map.Entry firstEntry()

K firstKey()

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");System.out.println(tmap.firstEntry()); // 返回最小key对应的映射/*1=dagu*/System.out.println(tmap.firstKey());  // 返回第一个key/*1*/}

Map.Entry floorEntry(K key) 返回小于或等于指定key的最大key的映射

K floorKey(K key) 返回小于或等于指定key的最大的key

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");System.out.println(tmap.floorEntry(3)); /*2=xiaolong*/System.out.println(tmap.floorKey(3));/*2*/}

Map.Entry ceilingEntry(K key) 返回大于或等于指定key的key的映射

K ceilingKey(K key) 返回大于或等于指定key的key

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");System.out.println(tmap.ceilingEntry(3));/*45=xidong*/System.out.println(tmap.ceilingKey(3));/*45*/}

Map.Entry firstEntry() 返回第一个key对应的映射

K firstKey() 返回第一个key对应的value

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");System.out.println(tmap.firstEntry());/*1=dagu*/System.out.println(tmap.firstKey());/*1*/}

Map.Entry lastEntry() 返回最后一个key对应的映射

K lastKey() 返回最后一个key对应的value

	public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");System.out.println(tmap.lastEntry());/*100=liming*/System.out.println(tmap.lastKey());/*100*/}

SortedMap headMap(K toKey) 放回此字典的部分视图 其中key值严格小于toKey的部分

NavigableMap headMap inclusive为true表示有等于的情况

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(66, "zhangming");System.out.println(tmap.headMap(45));/*{1=dagu, 2=xiaolong}*/System.out.println(tmap.headMap(45, true));  // 包含等于的情况/*{1=dagu, 2=xiaolong, 45=xidong}*/}

SortedMap tailMap(K fromKey) 返回此字典的部分视图 其key大于等于 fromKey

NavigableMap tailMap(K fromKey, boolean inclusive) 这里的inclusive表示是否包含边界 为true包含

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(66, "zhangming");System.out.println(tmap.tailMap(2));/*{2=xiaolong, 45=xidong, 66=zhangming, 100=liming}*/System.out.println(tmap.tailMap(2, false));/*{45=xidong, 66=zhangming, 100=liming}*/}

Map.Entry higherEntry(K key) 返回大于指定key的最小的一个 如果没有返回null

K higherKey(K key) 返回大于指定key的最小一个key 如果没有返回null

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(50, "zhangsan");tmap.put(66, "zhangming");System.out.println(tmap);/*{1=dagu, 2=xiaolong, 45=xidong, 50=zhangsan, 66=zhangming, 100=liming}*/System.out.println(tmap.higherEntry(45));  // 返回大于指定key的最小的一个映射/*50=zhangsan*/System.out.println(tmap.higherKey(45));	// 返回大于指定key的最小的一个key/*50*/}

Map.Entry lowerEntry(K key) 返回小于这个key的最大的一个映射

K lowerKey(K key) 返回小于这个key的最大一个key

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(50, "zhangsan");tmap.put(66, "zhangming");System.out.println(tmap);/*{1=dagu, 2=xiaolong, 45=xidong, 50=zhangsan, 66=zhangming, 100=liming}*/System.out.println(tmap.lowerEntry(50));  // 返回小于这个key的最大的一个映射/*45=xidong*/System.out.println(tmap.lowerKey(50));  // 返回小于这个key的最大一个key/*45*/}

Map.Entry pollFirstEntry() 删除并返回此字典的第一个key对应的映射

Map.Entry pollLastEntry() 删除并返回此字典的最后一个key对应的映射

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(66, "zhangming");System.out.println(tmap.pollFirstEntry());/*1=dagu*/System.out.println(tmap);/*{2=xiaolong, 45=xidong, 66=zhangming, 100=liming}*/System.out.println(tmap.pollLastEntry());/*100=liming*/System.out.println(tmap);/*{2=xiaolong, 45=xidong, 66=zhangming}*/}

V remove(Object key) 从此TreeMap中删除此key对应的映射(如果存在)

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(66, "zhangming");System.out.println(tmap);/*{1=dagu, 2=xiaolong, 45=xidong, 66=zhangming, 100=liming}*/tmap.remove(2);System.out.println(tmap);/*{1=dagu, 45=xidong, 66=zhangming, 100=liming}*/}

NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 返回的视图 可以设置是否包含左右端点

SortedMap subMap(K fromKey, K toKey) 返回的的字典的集合可以包含左端点 但是不包含右端点

public static void main(String[] args) {TreeMap tmap = new TreeMap<>();tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(50, "zhangsan");tmap.put(66, "zhangming");System.out.println(tmap);/*{1=dagu, 2=xiaolong, 45=xidong, 50=zhangsan, 66=zhangming, 100=liming}*/System.out.println(tmap.subMap(2, 66));  // 只包含左边界/*{2=xiaolong, 45=xidong, 50=zhangsan}*/System.out.println(tmap.subMap(2, true, 66, true));  // 可以设置是否包含左右边界/*{2=xiaolong, 45=xidong, 50=zhangsan, 66=zhangming}*/}

遍历方法

和HashMap一样

排序

因为Map数据结构的特殊性质 导致使用Comparator()需要一些技巧

Comparator()只能对key值排序 所以如果想要对Key和Value都排序 可以自定义Pair类 把Key和Value封装在一起

然后把Key值设置为Pair类型 这个时候的Value随便什么都可以

public static void main(String[] args) {// 按照Key值从大到小排序TreeMap tmap = new TreeMap<>(new Comparator() {@Overridepublic int compare(Integer o1, Integer o2) {int num = 0;if (o1 > o2) num = -1;else num = 1;return num;}});tmap.put(100, "liming");tmap.put(1, "dagu");tmap.put(2, "xiaolong");tmap.put(45, "xidong");tmap.put(50, "zhangsan");tmap.put(66, "zhangming");System.out.println(tmap);/*{100=liming, 66=zhangming, 50=zhangsan, 45=xidong, 2=xiaolong, 1=dagu}*/}

相关内容

热门资讯

上海小本自主创业持久项目 上海... 虽然今年的疫情人很多人受到了影响,有人看到了市场经济受影响,有人看到了商机。创业大军每年都有很多,虽...
马云说私人定制是最长久的 而它... 手机微信制作平台照片书照片书就是把您手机里的照片,比如,宝宝的照片,爱人的、家人的、朋友的照片,婚纱...
强烈推荐:2019年适合白手起... 世界上大多数胜利的事例,都是从小做起的,创业也不是一开端就有大资本做后台,小本创业是迈向创业疆场的第...
适合小本创业的项目 穷人告别打... 人不能以挣钱为目的,但是又有谁不是在为挣钱而做着不同的努力呢。上班族整天辛苦的加班,但是工资报酬并不...
五种适合小本创业的项目 五种适... 说起创业,我们应该从小本生意做起,我们看看有哪些最新适合小本创业的项目,让我们一起来看一看,希望每个...
适合小本创业的五个好项目 最适... 二胎政策开放很久了,儿童行业是具有潜力的市场,现在的家长都很疼爱自己的孩子,很注重孩子的早期教育培训...
小本投资创业项目有哪些 *新小... 餐饮粥火锅加盟重庆串串中式快餐品牌小型餐饮加盟小吃加盟铁锅焖面加盟中式快餐店十大咖啡品牌品牌快餐老火...
小本创业投资项目2011年 小... 刚开始投资的时候可以试试小本投资,投资金额的大小决定了很多创业项目风险性,投资潜力,今天先为大家分享...
2011年在河北省小本创业投资... 从目前的创业项目看来,女性创业的项目:服装,小吃餐饮,化妆品等,偏门项目。1、想开服装店,如果是初次...
99年版100元值多少钱 99... 杨静国际项目融资经理,既有项目法人融资“往年高交会的主题‘坚持新开展理念、推进高质量开展’,以及以后...