Java学习路线(14)——Map集合类

一、介绍

概念

  • Map集合是一种双列集合,每个元素包含两个数据。
  • 元素格式:【key=value】键值对元素
  • Map又称为 “键值对集合”

Map集合格式: {key1=value1,key2=value2,key3=value3,…}


二、Map集合的特点

Map家族图
Java学习路线(14)——Map集合类_第1张图片

1、说明:

  • 使用最多的Map集合是HashMap。
  • 重点是HashMap、LinkedHashMap,TreeMap。

2、体系特点:

  • 由键决定获取的值。
  • Map的键是无序、不重复、无索引的,值不做要求。
  • Map重复键相继覆盖前面的键值。
  • Map的键值对都可以为null。

三、Map集合API

由于Map集合是双列集合的父接口,它的功能为所有双列集合通用功能。

常用方法API

方法 说明
V put(K key,V value) 添加元素
V remove(Object key) 根据键删除元素
V get(Object key) 根据键获取元素
void clear() 清空集合
boolean containsKey(Object key) 判断集合中是否包含指定的键
boolean containsValue(Object value) 判断集合中是否包含指定的值
Set keySet() 获取集合中所有的键
Collection values() 获取集合中所有的值
boolean isEmpty() 判断集合是否为空
int size() 获取集合长度
Map putAll(Map M) 合并集合

四、Map的遍历方法

1、键找值

主要用于对象-value的键值对集合。

(1)流程

  • 获取键列表【Map.keySet()】
  • 根据键查找值【Map.get(key)】

(2)示例

class Main{
    public static void main(String[] args) {
        /*查找商品名为goods3的价格是多少?*/
        Map<String,Double> map = new HashMap<>();
        map.put("goods1",30.7);
        map.put("goods2",62.5);
        map.put("goods3",20.8);
        map.put("goods4",78.5);
        for (String key : map.keySet()) {
            if (key.equals("goods3")){
                System.out.println(map.get(key));
                break;
            }
        }
    }
}

/*打印结果*/
20.8

2、键值对

主要用于对象-value的键值对集合。

(1)流程

  • 获取所有键值对对象集合 【Set> entrySet()】
  • 获取键【K getKey()】
  • 获取值【V getValue()】

(2)示例

Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);

/*获取键值对对象*/
Set<Map.Entry<String, Double>> entries = map.entrySet();

/*遍历获取键与值*/
for (Map.Entry<String, Double> entry : entries) {
	System.out.println(entry.getKey() + "==>" + entry.getValue());
}

/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5

3、lambda表达式
(1)示例

Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);

map.forEach((k,v)-> System.out.println(k + "==>" + v));

/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5

五、Map的三种实现类
1、HashMap
特点: 无序、不重复、无索引,依赖hashCode()和equals()保证的唯一。若键要存储自定义对象,需要重写hashCode()和equals()。
底层: Hash表,每个元素包含两个数据

2、LinkedHashMap
特点: 有序、不重复、无索引,保证存储和取出的元素顺序一致。
底层: Hash表,双链表机制记录存储顺序。

3、TreeMap
特点: 可排序、不重复、无索引,只对键数据默认升序排序或自定义排序。
底层: 与TreeSet底层相同。
实现排序的方式:

  • 类实现Comparable接口
  • 集合自定义Comparator比较器

你可能感兴趣的:(java,学习,开发语言)