当前位置:   article > 正文

kafka的工作原理,Java基础:Map_kafkamap参数

kafkamap参数

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 集合来存放。

1.8 LinkedHashMap


我们知道HashMap保证成对元素唯一,并且查询速度很快,可是成对元素存放进去是没有顺序的,那么我们要保证有序,还要速度快怎么办呢?

在HashMap下面有一个子类LinkedHashMap,它是链表和哈希表组合的一个数据存储结构。

public class LinkedHashMapDemo {

public static void main(String[] args) {

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

map.put(“邓超”, “孙俪”);在这里插入代码片

map.put(“李晨”, “范冰冰”);

map.put(“刘德华”, “朱丽倩”);

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

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

System.out.println(entry.getKey() + " " + entry.getValue());

}

}

}

结果:

邓超 孙俪

李晨 范冰冰

刘德华 朱丽倩

1.9 Map集合练习


需求:

计算一个字符串中每个字符出现次数。

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

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

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

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

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

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

img

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
.csdnimg.cn/images/e5c14a7895254671a72faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

[外链图片转存中…(img-Riq32edr-1713459211614)]

[外链图片转存中…(img-5lLfc6Ql-1713459211615)]

[外链图片转存中…(img-F7LrQZ8u-1713459211616)]

[外链图片转存中…(img-FstFpxkW-1713459211617)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

闽ICP备14008679号