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
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* */}
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一样
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
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
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
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
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
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
NavigableMap
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
NavigableMap
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
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
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
Map.Entry
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
SortedMap
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}*/}