蓝桥杯-Map集合

Map集合实例化

Map集合实例化步骤

1.导包,导入java.util.Map包

2.通过HashMap实现类创建对象

3.语法格式如下

Map <引用数据类型,引用数据类型>map=new HashMap<>();

HashMap类的特点

1.HashMap是一个散列表,它存储的内容是键值对(key-value)映射。

2.HashMap实现了Map接口,根据建的HashCode值存储数据,具有很快的访问熟读,最多允许一条记录的键为null,不支持线程同步

3.HashMap是无序的,即不会记录插入的顺序。

常用方法

1 put(K key,V value)

将键(key)/值(value)映射存放在Map集合中

2 get(Object key)

返回指定键所映射的值,没有该Key对应的值则返回Null,即获得Key对应的value

3 size()

返回Map集合中的数据数量,准确说是返回key-value的组数。

4 entrySet()

将Map集合每个Key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合

5 getOrDefault (K key,Object value)

方法获取指定key对应的value,如果找不到key,则返回设置的默认值。

int c=map.getOrDefault(1,0);//查找1指定key有没有得应的值,没有返回0.

System.out.println(c);

java 复制代码
package AAA;
import java.nio.file.attribute.AclEntry;
import java.util.*;
import java.util.Map.Entry;
public class Passage2 {
	public static void main(String args[]) {
		Map<Integer,Integer> map=new HashMap<>();
		//键和值
		map.put(0, 1);//map不记录插入顺序,是无序的
		map.put(2, 5);
		map.put(3, 4);
		map.get(2);
		System.out.println(map.get(1)+" "+map.get(2));
		System.out.println(map.size());
		for(Entry<Integer,Integer>entry:  map.entrySet()) {
			System.out.println(entry.getKey()+" "+entry.getValue());
		}//通过entryset方法把Map转化为一个数组,通过增强for循环遍历map(Map集合转化为Set集合)
		int c=map.getOrDefault(1,0);//查找1指定key有没有得应的值,没有返回0.
		System.out.println(c);
		int d=map.getOrDefault(3,0);
	}

}

例题实战

题目:输入一个数字n,然后输入一个 为n(n<=1e5)的数组an(-1e9<=ai<=1e9)请你输出出现频率最大的数,如果有多个数频率最大,按从小到大依次输出。

示例:

输入 5 1 1 2 2 0

输出 1 2

示例:

输入 9 0 0 -1 -1 2 2 5 5 7

输出 0 -1 2 5

javascript 复制代码
package AAA;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.*;

public class Scheme {
	private static final String Integer = null;

	public static void main(String args[]) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		Map<Integer,Integer> map=new HashMap<>();
		for(int i=0;i<n;i++) {
			int a=scanner.nextInt();
			map.put(a, map.getOrDefault(a, 0)+1);//map存储每个数出现的次数
			
		}
		int max=0;
		for(Entry <Integer,Integer>entry:map.entrySet()) {
				max=Math.max(max, entry.getValue());
		}
		List <Integer> list=new  ArrayList<>();
		for(Entry <Integer,Integer>entry: map.entrySet()) {
			if(entry.getValue()==max) {
				list.add(entry.getKey());
			}
		}
		Collections.sort(list);
		for(int x:list) {
			System.out.print(x+" ");
		}
		
	
	}
}

	
相关推荐
YuTaoShao13 小时前
【LeetCode 每日一题】2976. 转换字符串的最小成本 I
算法·leetcode·职场和发展
码农水水15 小时前
得物Java面试被问:消息队列的死信队列和重试机制
java·开发语言·jvm·数据结构·机器学习·面试·职场和发展
测试界的世清16 小时前
金九银十软件测试面试题(800道)
测试工具·面试·职场和发展
YuTaoShao16 小时前
【LeetCode 每日一题】2977. 转换字符串的最小成本 II——(解法一)记忆化搜索
算法·leetcode·职场和发展
阿蔹17 小时前
力扣面试题一 Python
python·算法·leetcode·职场和发展
tod11317 小时前
[特殊字符] LeetCode 哈希表经典三题总结:1、49、128(思路 + 代码 + 模板)
算法·leetcode·职场和发展
代码无bug抓狂人18 小时前
C语言之李白打酒(蓝桥杯省B)
c语言·开发语言·蓝桥杯
码农水水18 小时前
传音Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·spring boot·后端·http·面试·职场和发展
iAkuya19 小时前
(leetcode)力扣100 56子集(迭代||递归)
算法·leetcode·职场和发展
MSTcheng.19 小时前
【算法】LeetCode『二分查找』
算法·leetcode·职场和发展