JAVA-初步认识-常用对象API(集合框架-Map集合-hashmap存储自定义对象)

本文探讨了如何使用哈希表存储学生与归属地的关系,并通过封装提高代码的可维护性和扩展性。同时介绍了哈希表的基本操作及解决键值冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.

把前面讲到的三个集合使用一下。

交代一下需求,学生是键,归属地是值。到底归属地是不是String,有待商榷。如果归属地比较简单,用天津,上海....这些就是字符串。如果归属地比较复杂,北京的海淀的...,建议把归属地封装成对象。为什么?归属地封装成对象以后,它里面包含着省字段,市字段,区字段.....这些字段你想单独地去获取,归属地对象自己最清楚,所以这个时候要进行封装。记住,一旦事物变复杂了,封装对象。将复杂事物简单化。如果就是简答的,那就直接字符串上,不用封装对象。

 在第一个例子中,演示的是hashmap集合。前面已经讲述了map集合,这里讨论的是map子类的集合?无论什么类型的集合,都是一个容器,对不同类型的存储元素进行各种操作。不同集合间对元素进行的操作种类大多都差不多,增,删,查...

在本例中进行取元素,可以有两种方法,要么keyset,要么。。。。先演示keyset。

set集合里面装的是键类型,

其实这里书写的方式挺奇怪的,距离来看,lisi,38和北京三个属性间在添加入集合时,书写方式比较奇怪,没看懂。

哈希是无序的,输出结果无序。

现在修改程序,对于zhaoliu这个对象,修改一下归属地,多添加一次。

输出结果如上,怎么解决。如果你认为键相同,是不是会出现值覆盖情况,它能全列是因为键不相同。如果想保证键相同,必须要提供键判断相同的依据。

哈希表结构要保证两个方法,一说hashset都明白,一说hashmap就糊涂了。既然这个键是存到了hashmap中(哈希表),它要具备hashcode和equals方法,具备它自己内容,所以在person类里面,要做一个复写动作。(集合这一块,代码貌似都是分开写的) 有人说存的是student,但是student继承了person,student里面没有任何属性,直接在person里面写就好了。现在在person类中,添加了hashcode和equals方法,再看输出结果。

上海的归属地对象,被铁岭覆盖了。

现在提个小事情,如果不写截图中注释的两句,而是截图中最后一句。它们是一个意思。

 

转载于:https://www.cnblogs.com/wsw-bk/p/8321677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值