java -- Map接口和可变参数

打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

Map

Map: 映射, 是双列集合顶层接口
java.util.Map
k: key 键 唯一
v: value 值 可重复
常用方法和Entry
  1. public V put(K key,V Value)
  2. // 指定的键与指定值添加到Map集合中, 添加成功返回null, 添加失败返回之前的值
  3. public V putIfAbsent(K key,V Value)
  4. // jdk1.8后新增 键相同值不覆盖返回原来的值
  5. public V get(Object key)
  6. // 根据指定的键, 获取对应值, 不存在返回null
  7. public V getOrDefault(Object key, V defaultValue)
  8. // jdk1.8后新增 不存在返回defaultValue
  9. public boolean containsKey(Object key)
  10. // 判断集合中是否包含指定的键
  11. public V remove(Object key)
  12. // 根据指定的键, 删除一对元素, 返回被删除的值
  13. public V remove(Object key, Object value)
  14. // 根据指定的键和值, 都一致则删除, 返回被删除的值
  15. Set<K> keySet()
  16. // 获取存放所有键的Set集合
  17. Collection<V> values()
  18. // 获取存放所有值的集合
  19. Set<Map.Entry<K, V>> entrySet()
  20. // 获取键值对映射关系对象的Set集合
  21. interface Entry<K,V>
  22. K getKey()
  23. // 获取映射关系对象中的键
  24. V getValue()
  25. // 获取映射关系对象中的值
复制代码
LinkedHashMap

底层数据结构: 链表 + 哈希表
链表保证元素有序 哈希表保证元素唯一
  1. public class Demo {
  2.     public static void main(String[] args) {
  3.         Map<String, Integer> map = new LinkedHashMap<>();
  4.         map.put("1张三",14);
  5.         map.put("2李四",17);
  6.         // put
  7.         // 添加成功返回 null
  8.         System.out.println(map.put("3王五", null));
  9.         // 添加失败返回之前的值, 并用新值覆盖
  10.         System.out.println(map.put("2李四", 19));
  11.         // putIfAbsent
  12.         // 键不存在添加新的键值对, 添加成功返回null
  13.         System.out.println(map.putIfAbsent("4刘六", 19));
  14.         // 若键存在 原有值不改变 并返回原有值
  15.         System.out.println(map.putIfAbsent("1张三", 11));
  16.         // get
  17.         // 根据键找值, 存在则返回键对应的值
  18.         System.out.println(map.get("1张三"));
  19.         // 不存在则返回null
  20.         System.out.println(map.get("2"));
  21.         // getOrDefault
  22.         // 键存在 返回对应值
  23.         System.out.println(map.getOrDefault("1张三", -1));
  24.         // 若不存在 则返回defaultValue
  25.         System.out.println(map.getOrDefault("2", -1));
  26.         // 判断集合中是否包含指定的键, 存在返回true, 不存在返回false
  27.         System.out.println(map.containsKey("2李四"));
  28.         // 根据键删除一对元素 返回被删除的值
  29.         // 不存在则返回null
  30.         System.out.println(map.remove("1"));
  31.         System.out.println(map.remove("1张三"));
  32.         System.out.println(map);
  33.         // 遍历
  34.         // 方式1
  35.         // 获取存放所有键的集合
  36.         Set<String> set = map.keySet();
  37.         // 获取存放所有值的集合
  38.         Collection<Integer> values = map.values();
  39.         // 迭代器
  40.         Iterator<Integer> iterator = values.iterator();
  41.         while (iterator.hasNext()) {
  42.             System.out.print(iterator.next() + " ");
  43.         }
  44.         System.out.println();
  45.         // 增强for
  46.         for (Integer value : values) {
  47.             System.out.print(value + " ");
  48.         }
  49.         System.out.println();
  50.         // 迭代器
  51.         Iterator<String> it = set.iterator();
  52.         while (it.hasNext()) {
  53.             String key = it.next();
  54.             System.out.print(key + " = " + map.get(key) + "\t");
  55.         }
  56.         System.out.println();
  57.         // 增强for
  58.         for (String s : set) {
  59.             System.out.print(s + " = " + map.get(s) + "\t");
  60.         }
  61.         System.out.println();
  62.         // 方式2
  63.         // Entry是Map的内部类 所以调用时需要Map.Entry
  64.         Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
  65.         // 迭代器
  66.         Iterator< Map.Entry<String, Integer>> entries = entrySet.iterator();
  67.         while (entries.hasNext()) {
  68.             Map.Entry<String, Integer> next = entries.next();
  69.             System.out.print(next.getKey() + " = " + next.getValue() + "\t");
  70.         }
  71.         System.out.println();
  72.         // 增强for
  73.         for (Map.Entry<String, Integer> entry : entrySet) {
  74.             System.out.print(entry.getKey() + " = "+entry.getValue() + "\t");
  75.         }
  76.     }
  77. }
复制代码
TreeMap

java.util.TreeMap
底层数据结构是红黑树  键 排序 具有唯一性  不允许null键 允许null值
[code]/*    java.util.TreeMap        底层数据结构是红黑树  键 排序 具有唯一性  不允许null键 允许null值        构造方法:            public TreeMap() 空参构建, 集合中的键必须实现自然排序接口 Comparable 的方法 CompareTo            public TreeMap(Comparator
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表