集合基础5:Map集合概述、API、遍历方式、案例、实现类 集合嵌套

 

Map集合概述

 

 

 

 

 

 

 

 

Map集合体系特点

 

 

 

 

 

 

 

 

 

 

 

 

 

常用API

public V get(Objcet key)   根据键获取对应值,如果没有对应的键,会返回null

public Set<K> keySet()    获取全部键的集合,返回值为set集合,因为set符合key无序不重复的特点

public Collection<V> values()   获取全部值的集合,返回值为collection集合,因为value可能重复

public Set<Entry<K,V>> entrySet()  将Map集合转换为Set集合,map中每一个键值对作为set中的一个元素

 

 

 

 

 

 

 

 

Map遍历方式

方式一:键找值

 

 

 

 

 

方式二:键值对

 

 

 

 

 

 

 

方式三:lambda表达式

 

 

 

 

案例

 

 

package com.zjm.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class Demo01 {
public static void main(String[] args) {
// 1、把80个学生选择的数据拿进来。
String[] selects = {"A","B","C","D"};
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 80; i++) {
sb.append(selects[random.nextInt(selects.length)]);
}
System.out.println("学生数据:"+sb);

// 2、定义一个Map集合记录最终统计的结果: A=30 B=20 C=20 D=10键是景点 值是选择的数量
Map<Character,Integer> result = new HashMap<>();
// 3. 遍历80个学生选择的数据
for (int i = 0; i < sb.length(); i++) {
// 4.提取当前选择景点字符
char ch = sb.charAt(i);
// 5. 判断Map集合中是否存在这个键
if (result.containsKey(ch)){
result.put(ch,result.get(ch)+1);
}else {
result.put(ch,1);
}
}
System.out.println("统计结果:"+result);

}
}

 

实现类HashMap

 

 

 

 

 

实现类LinkedHashMap

 

 

 

实现类TreeMap

 

 

 集合嵌套案例

 

package com.zjm.map;

import java.util.*;

public class Demo02 {
//集合嵌套案例:景点人数投票统计,一个人可以投多个景点
public static void main(String[] args) {
//1、使用一个Map集合存储。
Map<String, List<String>> data = new HashMap<>();
// 2、把学生选择的数据存入进去。
List<String> selects = new ArrayList<>();
Collections.addAll(selects,"A","B");
data.put("小明",selects);

List<String> selects1 = new ArrayList<>();
Collections.addAll(selects1,"A","B","C");
data.put("小红",selects1);

List<String> selects2 = new ArrayList<>();
Collections.addAll(selects2,"A","B","C","D");
data.put("小王",selects2);
System.out.println(data);

//3.统计每个景点选择的人数。
Map<String,Integer> infos = new HashMap<>();
// 4.提取所有人选择的景点的信息。
Collection<List<String>> values = data.values();
for (List<String> value : values) {
for (String s : value) {
if (infos.containsKey(s)){
infos.put(s , infos.get(s) + 1);
}else {
infos.put(s , 1);
}
}
}
System.out.println("统计结果:"+infos);
}
}
posted @ 2022-10-31 22:06  去公司搞点薯条  阅读(78)  评论(0)    收藏  举报