Java 集合系列教程(四):深入解析Map集合及实用方法

更新:11-15 名人轶事 我要投稿 纠错 投诉

老铁们,大家好,相信还有很多朋友对于Java 集合系列教程(四):深入解析Map集合及实用方法和的相关问题不太懂,没关系,今天就由我来为大家分享分享Java 集合系列教程(四):深入解析Map集合及实用方法以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

MapmyMap=new HashMap();

//添加键值对

myMap.put("苹果", 1);

myMap.put("香蕉", 2);

System.out.println(myMap); //输出: {Apple=1, Banana=2}

获取值

V get(Object key):根据给定的key 获取对应的值。如果键不存在,则返回null 。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//获取值

整数香蕉=myMap.get("香蕉");

System.out.println(香蕉); //输出: 2

删除键值对

V remove(Object key):删除指定键的键值对。如果key存在则返回对应的value,否则返回null。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//删除键为"Apple"的键值对并返回1

整数removeValue=myMap.remove("Apple");

System.out.println(removedValue);//输出: 1

System.out.println(myMap);//输出: {Pear=5, Mango=3, Orange=4, Banana=2}

判断键是否存在

boolean containsKey(Object key): 判断Map是否包含指定的key。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//判断"Apple"是否存在

boolean hasApple=myMap.containsKey("Apple");

System.out.println("密钥Apple 存在: " + hasApple); //输出: key 苹果存在: true

判断值是否存在

boolean containsValue(Object value):判断Map是否包含指定值。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//判断值1是否存在

布尔containsValue=myMap.containsValue(1);

System.out.println("值1存在吗?" + containsValue); //输出: 值1 是否存在? true

获取Map大小

int size():返回Map中键值对的数量。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//获取集合的大小

int mapSize=myMap.size();

System.out.println(mapSize);//输出: 5

清空Map

voidclear():删除Map中所有键值对。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//清除地图

myMap.clear();

System.out.println(myMap);//输出: {}

获取所有键的集合

SetkeySet():返回包含所有键的Set。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//获取所有键的集合

Setkeys=myMap.keySet();

System.out.println(keys);//输出: [Apple, Pear, Mango, Orange, Banana]

获取所有值的集合

Collectionvalues(): 返回包含所有值的Collection。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//获取所有值的集合

Collectionvalues=myMap.values();

System.out.println(values);//输出: [1, 5, 3, 4, 2]

获取键值对集合

SetentrySet():返回一个包含所有键值对的Set,每个元素都是Map.Entry类型对象。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put("苹果", 1);

put("香蕉", 2);

put("芒果", 3);

put("橙色", 4);

put("梨", 5);

}};

//获取键值对

Setentries=myMap.entrySet();

System.out.println(entries);//输出: [Apple=1, Pear=5, Mango=3, Orange=4, Banana=2]

Map集合遍历

使用keySet()遍历键值对

keySet()方法返回一个包含所有内容的列表keys Set视图,可以通过迭代这个Set来获取所有的key,然后通过Map的get()方法获取对应的值。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put(1, "苹果");

put(2, "香蕉");

put(3, "芒果");

put(4, "橙色");

put(5, "梨");

}};

//使用keySet进行遍历

for (整数键: myMap.keySet()) {

字符串值=myMap.get(key);

System.out.println("Key:" + key + ", Value:" + value);

使用entrySet()遍历键值对

entrySet() 方法返回一个包含所有键值对(Map.Entry 对象)的Set 视图。键和值可以直接通过Map.Entry对象获取。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put(1, "苹果");

put(2, "香蕉");

put(3, "芒果");

put(4, "橙色");

put(5, "梨");

}};

//使用entrySet()遍历键值对

for (Map.Entryentry : myMap.entrySet()) {

//获取密钥

整数键=entry.getKey();

//获取值

字符串值=entry.getValue();

System.out.println("Key:" + key + ", Value:" + value);

}

使用forEach()

Java 8中引入了forEach()方法和Stream API,提供了更加简洁的遍历方法,特别是在处理集合时,可以轻松实现链式操作。 //创建Map集合,直接在构造函数中添加初始键值对

MapmyMap=新的HashMap() {{

put(1, "苹果");

put(2, "香蕉");

put(3, "芒果");

put(4, "橙色");

put(5, "梨");

}};

//使用forEach() 迭代输出

myMap.forEach((key,value)-System.out.println("Key:" + key + ", Value: " + value));

HashMap 集合

HashMap是基于哈希表实现的Map接口的异步实现类,允许存储键值对并根据键高效地查找值。

数据结构:HashMap内部使用数组和链表(或红黑树,从JDK1.8开始)的组合来存储数据。数组用于快速定位,链表或红黑树用于解决哈希冲突。键的唯一性:依靠hashCode方法和equals方法保证key的唯一性。初始化:如果key是存储自定义对象,需要重写hashCode和equals方法

代码示例

创建一个学生类,键是学生对象(Student):import java.util.Objects;

公开课学生{

private String mame;//名称

私有整数年龄; //年龄

公共学生(){

}

公共学生(字符串mame,int年龄){

这个.mame=mame;

this.age=年龄;

}

公共字符串getMame() {

返回妈妈;

}

公共无效setMame(字符串mame){

这个.mame=mame;

}

公共int getAge() {

返回年龄;

}

公共无效setAge(int年龄){

this.age=年龄;

}

//为了保证对象的唯一性,重写equals和hashCode

//如果student对象的成员变量值相同,我们就认为它们是同一个对象。

@覆盖

公共布尔等于(对象o){

if (this==o) 返回true;

if (o==null || getClass() !=o.getClass()) 返回false;

学生学生=(学生)o;

return 年龄==学生.年龄Objects.equals(mame, 学生.mame);

}

@覆盖

公共int hashCode() {

return Objects.hash(mame, 年龄);

}

}测试类://创建HashMap集合对象

HashMapstu=new HashMap();

//创建学生对象

Student s1=new Student("李一", 30);

Student s2=new Student("李一", 30);

Student s3=new Student("张三", 37);

Student s4=new Student("李思", 32);

//将学生添加到集合中

Stu.put(s1,"北京");

Stu.put(s2,"重庆");

Stu.put(s3,"上海");

Stu.put(s4,"曼哈顿");

//遍历集合

for (学生密钥: Stu.keySet()) {

字符串值=Stu.get(key);

System.out.println(key.getName() + "," + key.getAge() + "," + value);

}

TreeMap集合

TreeMap是Java集合框架中实现Map接口的类。它使用红黑树作为底层数据结构来保证密钥的有序存储。

TreeMap的键值对是有序的,可以按照键的自然顺序(键实现了Comparable接口)或者通过自定义Comparator进行排序。红黑树是一种自平衡二叉查找树,保证了插入、删除和查找操作的时间复杂度在最坏情况下为O(log n)。

代码示例

创建一个学生类:导入java.util.Objects;

公共类Student 实现Comparable{

私有字符串名称; //姓名

私有整数年龄; //年龄

公共学生(){

}

公共学生(字符串名称,整数年龄){

this.name=名称;

this.age=年龄;

}

公共字符串getName() {

返回名称;

}

公共无效setName(字符串名称){

this.name=名称;

}

公共int getAge() {

返回年龄;

}

公共无效setAge(int年龄){

this.age=年龄;

}

@覆盖

公共字符串toString() {

返回“学生{”+

"名称="" + 名称+ """ +

", 年龄=" + 年龄+

"}";

}

//为了保证对象的唯一性,重写equals和hashCode

//如果student对象的成员变量值相同,我们就认为它们是同一个对象

@覆盖

公共布尔等于(对象o){

if (this==o) 返回true;

if (o==null || getClass() !=o.getClass()) 返回false;

学生学生=(学生)o;

return 年龄==学生.年龄Objects.equals(姓名, 学生.姓名);

}

@覆盖

公共int hashCode() {

return Objects.hash(姓名,年龄);

}

//继承Comparable接口,重写compareTo方法,对学生按照条件进行排序。

@覆盖

公共int 比较(学生o){

//按年龄排序

int result=o.getAge() - this.getAge();

//次要条件,按名称排序。

结果=结果==0? 结果;

返回结果;

}

}测试方法://创建TreeMap集合对象

TreeMapstu=new TreeMap();

//创建学生对象

Student s1=new Student("李一", 30);

Student s2=new Student("李一", 30);

Student s3=new Student("张三", 37);

Student s4=new Student("李思", 32);

//将学生添加到集合中

Stu.put(s1,"北京");

Stu.put(s2,"重庆");

Stu.put(s3,"上海");

Stu.put(s4,"曼哈顿");

//遍历集合

for (学生密钥: Stu.keySet()) {

字符串值=Stu.get(key);

用户评论

苏樱凉

终于开始学习Map了,一直在用List,感觉好像能用的功能都限定在一个方向上了。

    有17位网友表示赞同!

泪湿青衫

之前写代码的时候把Map理解错了很久,这次好好了解一下看能不能加深印象。

    有14位网友表示赞同!

聽風

想学Java程序设计开发,地图集框架是基础必掌握的内容吧?

    有17位网友表示赞同!

优雅的叶子

哪个Map集合适用范围广一些呢?大家都在用哪个?

    有15位网友表示赞同!

昂贵的背影

讲解详细地,我理解力比较有限,希望能明白各个Map集合之间的区别。

    有6位网友表示赞同!

轨迹!

看完这篇总结后,感觉自己对Map的掌握程度又提升了。

    有8位网友表示赞同!

男神大妈

HashMap和TreeMap的区别一直搞不清,这篇文章能解释清楚吗?

    有20位网友表示赞同!

非想

急切盼着学习到更多的Java知识!

    有17位网友表示赞同!

万象皆为过客

这篇文章分析很透彻,让我对每个方法的使用场景都更加了解了。

    有7位网友表示赞同!

你身上有刺,别扎我

Map集合是实现数据关联的强大工具,期待深入学习!

    有17位网友表示赞同!

冷嘲热讽i

现在用到的项目好像没有用到Map集合,但是看到这个标题就感觉很有必要去学习一下了。

    有19位网友表示赞同!

无关风月

想在面试的时候表现更出色,得提升这些基础知识水平。

    有8位网友表示赞同!

为爱放弃

分享一篇关于Java Map集合的小技巧,可以让代码更加高效!

    有13位网友表示赞同!

孤街浪途

Java开发的语法真的很灵活啊! 学习Map可以提高coding效率吗?

    有19位网友表示赞同!

涐们的幸福像流星丶

希望这篇文章能够讲解一些进阶的使用技巧,让我更好地掌握Map集合。

    有7位网友表示赞同!

把孤独喂饱

Map集合真是一大工具,用它可以实现很多功能。学习完后肯定能写出更牛的文章!

    有7位网友表示赞同!

屌国女农

看完这个标题立马想去查阅资料了!

    有18位网友表示赞同!

伤离别

这篇文章讲解了哪些常用方法来处理Map集合的数据?

    有16位网友表示赞同!

此生一诺

期待作者详细地介绍每个Map集合的特点以及适合的运用场景。

    有12位网友表示赞同!

单身i

最近在学习Java,发现很多地方都需要用到Map这个集合。

    有14位网友表示赞同!

【Java 集合系列教程(四):深入解析Map集合及实用方法】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

上一篇:限时优惠!仅需9元,轻松免费申领永久电话卡 下一篇:2024年热门韩剧《京城怪物第二季》全集高清观看指南