Map(双列集合的根接口)

2024-04-28 11:32
文章标签 接口 map 集合 双列

本文主要是介绍Map(双列集合的根接口),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Map(双列集合的根接口)

1.介绍:

这里写图片描述

1.以键值对形势保存数据
2.键值唯一
2.Hashset 和 HashMap 之间的联系
1.底层都是哈希算法 根据面向对象来分析 一套算法 俩类使用
2.HashSet底层 依赖 HashMap 去实现 
3.添加到set中的值 实际上是添加 到 map中健的值
4.HashMap:有去重功能 说的是健
5.TreeMap:有排序功能 说的也是健
3.Map的添加方法
public class text {
public static void main(String[] args) {HashMap<String, Integer>map = new HashMap<>();Integer i1 = map.put("东", 19);Integer i2 = map.put("南", 20);Integer i3 = map.put("西", 21);Integer i4 = map.put("北", 22);Integer i5 = map.put("北", 23);System.out.println(map);System.out.println(i1);System.out.println(i2);System.out.println(i3);System.out.println(i4);System.out.println(i5);
}
}运行结果:
{南=20, 北=23, 东=19, 西=21}
null
null
null
null
22结论: 返回的是被替换(覆盖)的值
4.判断键值key是否存在map;
public class text {
public static void main(String[] args) {HashMap<String, Integer>map = new HashMap<>();Integer i1 = map.put("东", 19);Integer i2 = map.put("南", 20);Integer i3 = map.put("西", 21);Integer i4 = map.put("北", 22);boolean b1 = map.containsKey("南");System.out.println(b1);System.out.println(map);运行结果:
true
{南=20, 北=22, 东=19, 西=21}
5.判断值value是否存在map
    boolean b2 = map.containsValue(20);System.out.println(b2);运行结果: true
6.通过键值查询对应的值
    Integer c1 = map.get("东");Integer c2 = map.get("中");System.out.println(c1);System.out.println(c2); 运行结果:
19
null
7.获取所有key键值的Set集合
    Set<String>keySet = map.keySet();System.out.println(keySet);运行结果:
[南, 北, 东, 西]
8.获取所有值value的集合
    Collection<Integer>values =  map.values();System.out.println(values);
运行结果:
[20, 22, 19, 21]
9.通过键值key删除整个键值对
    Integer remove = map.remove("振南");System.out.println(remove);运行结果:
20
{北=22, 东=19, 西=21}
10.清空
    map.clear();System.out.println(map);
运行结果:
{}}
}
11.map遍历
public class text {
public static void main(String[] args) {HashMap<String, Integer>map = new HashMap<>();
//  通过keySet遍历map.put("东", 19);map.put("南", 20);map.put("西", 21);map.put("北", 22);System.out.println(map);//  获取所有key的Set集合Set<String>keySet = map.keySet();System.out.println(keySet);//  获取迭代器Iterator<String> iterator = keySet.iterator();
//  遍历所有keywhile(iterator.hasNext()) {String key = iterator.next();
//      通过key获取对应的value从mapInteger value = map.get(key);System.out.println(key + "=" + value);}//  获取所有value的集合Collection<Integer>values =  map.values();System.out.println(values);
}
}
运行结果:
{南=20, 北=22, 东=19, 西=21}
[南, 北, 东, 西]
南=20
北=22
东=19
西=21
[20, 22, 19, 21]
12.增强for循环遍历for
public class text {
public static void main(String[] args) {HashMap<String, Integer>map = new HashMap<>();map.put("东", 19);map.put("南", 20);map.put("西", 21);map.put("北", 22);   
//  增强for循环Set<String>keySet = map.keySet();for (String key : keySet) {Integer integer = map.get(key);System.out.println(key+integer);}
}
}
运行结果:
南202219
西21
13.迭代器遍历map(Entry==从map中取出整个键值对)
public class text {
public static void main(String[] args) {HashMap<String, Integer>map = new HashMap<>();map.put("东", 19);map.put("南", 20);map.put("西", 21);map.put("北", 22);   
//  获取键值对象 的Set集合 来遍历Set<Map.Entry<String, Integer>> entrySet = map.entrySet();Iterator<Map.Entry<String, Integer>> iterator = entrySet.iterator();while (iterator.hasNext()) {
//      获取Entry对象Entry<String, Integer> entry = iterator.next();
//      获取valueInteger value = entry.getValue();String key = entry.getKey();System.out.println(value+"--"+ key);}
}
}运行结果:
20--南
22--北
19--东
21--西
13.增强for循环遍历map(Entry==从map中取出整个键值对)
public class text {
public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();map.put("振北", 20);map.put("振南", 20);map.put("振西", 21);map.put("振东", 22);Set<Map.Entry<String, Integer>> entrySet = map.entrySet();for(Map.Entry<String, Integer> entry : entrySet ) {String string = entry.getKey();Integer integer = entry.getValue();System.out.println(string + "=" + integer);}
}}
运行结果:
振东=22
振北=20
振南=20
振西=21
14.map存对象
public class text {
public static void main(String[] args) {HashMap<Student , String>hashMap = new HashMap<>();hashMap.put(new Student("哈哈",12),"安徽");hashMap.put(new Student("小小",13),"安徽");hashMap.put(new Student("额额",15),"安徽");hashMap.put(new Student("小小",13),"安心");//  重写HashCode和Equals
//  重复之后key相同 value会重写覆盖System.out.println(hashMap);}}
运行结果:
{Student [name=额额, age=15]=安徽, Student [name=哈哈, age=12]=安徽, Student [name=小小, age=13]=安心}

Student类重写部


Student类重写部分:
@Override
public int compareTo(Student o) {int num = this.age - o.getAge();return num == 0 ? 1 : num;@Override
public int hashCode() {final int prime = 31;int result = 1;result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;
}
@Override
public boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Student other = (Student) obj;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;
}   
1.LinkedHashMap储存信息(按原输入顺序排序)
public class text {
public static void main(String[] args) {LinkedHashMap<String, Integer> map = new LinkedHashMap<>();map.put("哈哈", 11);map.put("小小", 12);map.put("多多", 11);map.put("欧欧", 11);System.out.println(map);}}运行结果:
{哈哈=11, 小小=12, 多多=11, 欧欧=11}
1.1创建一个TreeMaap 保存学生 value保存户籍,按年龄排序
public class text {
public static void main(String[] args) {TreeMap<Student, String>map = new TreeMap<>();map.put(new Student("丁鹏",11),"安徽");map.put(new Student("哈哈",15),"阿萨斯");map.put(new Student("小小",145),"斯蒂芬");map.put(new Student("人人",14),"塞上风");map.put(new Student("乖乖",71),"人工岛");System.out.println(map);}}运行结果:
{Student [name=丁鹏, age=11]=安徽,
Student [name=人人, age=14]=塞上风,
Student [name=哈哈, age=15]=阿萨斯,
Student [name=乖乖, age=71]=人工岛,
Student [name=小小, age=145]=斯蒂芬}
2.随机交换集合中值的位置(洗牌)
public class text {
public static void main(String[] args) {//collecttions类的方法(静态方法)ArrayList<Integer> list = new ArrayList<>();list.add(12);list.add(12);list.add(12);list.add(16);
// 随机交换集合中值的位置(洗牌)Collections.shuffle(list);System.out.println(list);
运行结果:
[12, 12, 16, 12]
3.排序
    Collections.sort(list);System.out.println(list);
运行结果:
[12, 12, 12, 16]
4.二分查找
int index = Collections.binarySearch(list, 16);System.out.println(index);运行结果:
3
5.反转集合
    Collections.reverse(list);System.out.println(list);运行结果:
[16, 12, 12, 12]
}}
6.排序
    ArrayList<Student> list = new ArrayList<>();list.add(new Student("小小",12));list.add(new Student("多多",13));list.add(new Student("哈哈",11));Collections.sort(list);System.out.println(list);
运行结果:
[Student [name=哈哈, age=11], Student [name=小小, age=12], Student [name=多多, age=13]]

这篇关于Map(双列集合的根接口)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943143

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方