当前位置:   article > 正文

Java基础:Map_java system map

java system map

System.out.println(map);

//String remove(String key)

System.out.println(map.remove(“邓超”));

System.out.println(map);

// 想要查看 黄晓明的媳妇 是谁

System.out.println(map.get(“黄晓明”));

System.out.println(map.get(“邓超”));

}

}

tips: 使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到 集合中;

若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的 值,替换成指定的新值。

1.4 Map集合遍历键找值方式


键找值方式:即通过元素中的键,获取键所对应的值

分析步骤:

  1. 获取Map中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键。方法提示: keyset()

  2. 遍历键的Set集合,得到每一个键。

  3. 根据键,获取键所对应的值。方法提示: get(K key)

代码演示:

public class MapDemo01 {

public static void main(String[] args) {

//创建Map集合对象

HashMap<String, String> map = new HashMap<String,String>();

//添加元素到集合

map.put(“胡歌”, “霍建华”);

map.put(“郭德纲”, “于谦”);

map.put(“薛之谦”, “大张伟”);

//获取所有的键 获取键集

Set keys = map.keySet();

// 遍历键集 得到 每一个键

for (String key : keys) {

//key 就是键

//获取对应值

String value = map.get(key);

System.out.println(key+“的CP是:”+value);

}

}

}

遍历图解:

在这里插入图片描述

1.5 Entry键值对对象


我们已经知道, Map 中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map 中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)Entry 将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map 集合时,就可以从每一个键值对( Entry )对象中获取对应的键与对应的值。

既然Entry表示了一对键和值,那么也同样提供了获取对应键和对应值得方法:

  • public K getKey() :获取Entry对象中的键。

  • public V getValue() :获取Entry对象中的值。

在Map集合中也提供了获取所有Entry对象的方法:

  • public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。

1.6 Map集合遍历键值对方式


键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

操作步骤与图解:

  1. 获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。方法提示: entrySet()

  2. 遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象。

  3. 通过键值对(Entry)对象,获取Entry对象中的键与值。 方法提示: getkey() getValue()

public class MapDemo02 {

public static void main(String[] args) {

// 创建Map集合对象

HashMap<String, String> map = new HashMap<String,String>();

// 添加元素到集合

map.put(“胡歌”, “霍建华”);

map.put(“郭德纲”, “于谦”);

map.put(“薛之谦”, “大张伟”);

// 获取 所有的 entry对象 entrySet

Set<Entry<String,String>> entrySet = map.entrySet();

// 遍历得到每一个entry对象

for (Entry<String, String> entry : entrySet) {

// 解析

String key = entry.getKey();

String value = entry.getValue();

System.out.println(key+“的CP是:”+value);

}

}

}

遍历图解:

在这里插入图片描述

tips:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。

1.7 HashMap存储自定义类型键值


练习:每位学生(姓名,年龄)都有自己的家庭住址。那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中。学生作为键, 家庭住址作为值。

注意,学生姓名相同并且年龄相同视为同一名学生。

编写学生类:

public class Student {

private String name;

private int age;

public Student() {

}

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public boolean equals(Object o) {

if (this == o)

return true;

if (o == null || getClass() != o.getClass())

return false;

Student student = (Student) o;

return age == student.age && Objects.equals(name, student.name);

}

@Override

public int hashCode() {

return Objects.hash(name, age);

}

}

编写测试类:

public class HashMapTest {

public static void main(String[] args) {

//1,创建Hashmap集合对象。

Map<Student,String>map = new HashMap<Student,String>();

//2,添加元素。

map.put(newStudent(“lisi”,28), “上海”);

map.put(newStudent(“wangwu”,22), “北京”);

map.put(newStudent(“zhaoliu”,24), “成都”);

map.put(newStudent(“zhouqi”,25), “广州”);

map.put(newStudent(“wangwu”,22), “南京”);

//3,取出元素。键找值方式

SetkeySet = map.keySet();

for(Student key: keySet){

Stringvalue = map.get(key);

System.out.println(key.toString()+“…”+value);

}

}

}

  • 当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须复写对象的hashCode和equals方法(如果忘记,请回顾HashSet存放自定义对象)。

  • 如果要保证map中存放的key和取出的顺序一致,可以使用java.util.LinkedHashMap 集合来存放。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

我的面试宝典:一线互联网大厂Java核心面试题库

以下是我个人的一些做法,希望可以给各位提供一些帮助:

整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!

image

283页的Java进阶核心pdf文档

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

image

还有源码相关的阅读学习

image

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

[外链图片转存中…(img-roylKFFw-1712047641853)]

还有源码相关的阅读学习

[外链图片转存中…(img-9zMafQSY-1712047641853)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/597148
推荐阅读
相关标签
  

闽ICP备14008679号