蓝桥杯-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+" ");
		}
		
	
	}
}

	
相关推荐
CoderYanger1 小时前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
爱学习的执念3 小时前
软件测试面试常问,主要考察你对接口测试相关知识的掌握程度?
面试·职场和发展
测试界的世清17 小时前
各大厂软件测试面试题+答案纯干货
面试·职场和发展
SunShaoLu19 小时前
实测7款思维导图工具图片导出能力:PNG/SVG/PDF全支持,附选型指南
职场和发展·效率工具·思维导图
闪电悠米20 小时前
力扣hot100-48.旋转图像-转置翻转详解
算法·leetcode·职场和发展
ychqsq1 天前
95.归位
经验分享·职场和发展
小poop1 天前
算法复杂度:从入门到面试必备
算法·面试·职场和发展
网安老伯1 天前
网络安全基础要点知识介绍(非常详细),零基础入门到精通,看这一篇就够了
运维·前端·网络协议·web安全·网络安全·职场和发展
叩码以求索2 天前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
谙弆悕博士2 天前
信息系统项目管理师教程(第4版)笔记——第 2 章 信息技术发展
笔记·职场和发展·软考高级·软考·高项·项目经理