java中的Map的键如果是自己写的一个类的对象,怎么根据这个键获取值

java中的Map的键如果是自己写的一个类的对象,怎么根据这个键获取值,第1张

重写自定义对象的hashcode()方法,让内容相同的对象返回一样的hashcode默认情况自定义对象是以内存地址为hashcode,你“重新创建一个一样的对象”,存在“重新创建”就会导致对象不一样所以要重写覆盖hashcode方法才能获取到map值
另外,也可以低层一点,你的自定义对象上设一个int id属性 而Map转为以id为键,比如Map<int, Value>。

Map结构跟我们上节讲解的set结构语法差不多 《理解数据结构之Set,只要5分钟》 ,不同是Map语法是一种数组键值对格式,Map也是处理了防止对象键值强制类型转换问题。Map是利用数组特性解决的,我们都知道数组可以传入任意类型值,所以Map结构也接收所有类型值。我们刚才说了值不会向对象那样进行强制类型转换,如24和"24"就是两种类型关系,互不会影响 。

上面example中,创建一个Map对象,上面我们说过Map是一个数组对象,里面还接收一个数组对象也就是二维数组,里面的参数也就是键值对形式,然后设置map值,mapset方法接收两个参数,前者是key值后者是value值。这时Map对象添加了name值

上面example中,Map对象提供了查看size属性,查看当前Map结构有几组数据。

上面example中,我们使用Mapget方法获取对象的属性值。如果获取一个Map对象中不存在的则返回undefined。

上面example中,Maphas返回的是一个Boolean值,会去这个Map中查找如果找到返回true,否则返回false,一般用于检测这个Map中存在该值的时候使用。

上面example中,Mapdelete方法删除结构中某个值,如果这个值存在Map结构中删除则返回true,如果删除一个不存在的值则返回false。

上面example中,Mapclear该方法则会清除Map结构中所有的属性。

上面example中,可以看到Map结构是一个二维数组,里面是键值对形式的。Map结构也可以使用forEach遍历,它接收3个参数:

我们上面讲了Map可以forEach遍历,这样循环解析也可以组成一个新的对象。那么Es6方法新提供了快速将这种结构转换为对象。

一句话总结:Set结构主要用作于判断某个值是否存在该对象中,而Map结构主要用作于从当前结构中获取该对象的值。

有的情况下我们需求想实现,我第一次请求后台接口Api,当我请求过后第二次就走缓存,不在发送接口Api。

我们在项目需求时,肯定会遇到一个状态对应着一种 *** 作,如下:

你是仅仅将value值转换成list对象吗?这个简单,如果你想要全部提出来也是可以的。我发代码你。
public
List
mapByList(HashMap
map){
List
list
=
new
ArrayList
();
Set
>
set
=
mapentrySet();
Iterator
>
it
=
setiterator();
//将map对象里面的属性循环遍历出来
while(ithasNext()){
Entry
entry
=
itnext();
//得到value值,装到list里面,也可以entrygetKey()。
//如果2个都需要装。可以弄成一个对象来装
listadd(entrygetValue());
}
return
list;
}
差不多就这样。

1、如图所示新建一个demo作为测试。

2、这里是第一种方法,也是推荐的一个方法,需要引入如图所示的jar包(这里是java项目引入jar)。

3、如图所示是全部的代码,首先创建一个map,使用转换方法进行转换后转成字符串格式输出。

4、点击运行该java文件,即可在输出控制台看到转换成功的字符串。

5、这是第二种方法,需要引入的jar包比较对,如果引入不全,在运行的时候会报不同的错。

6、然后使用的是JSONObjectfromObject() 方法进行转换的,输出结果和上一个方法一致。

hashmap是以键值对(key-value)的格式保存对象的容器,
数组是按顺序一个一个保存对象的容器
你把hashmap转换成数组是想把key转成数组呢还是把value转成数组呢或者key和value组合成的对象转换成数组呢我把key和value的分别写出来,组合对象的同理建新对象保存即可
Map<String, Object> map = new HashMap<String, Object>();
mapput("a", "tom");
mapput("b", "jerry");
Object[] keys = mapkeySet()toArray();
Object[] values = mapvalues()toArray();
Systemoutprintln("key数组:"+ArraystoString(keys));
Systemoutprintln("value数组:"+ArraystoString(values));

Map不用强转也是Objec的子类
而Object类型,强转成Map,这就可能会造成错误。
就好比你闭上眼睛,递给你一个面包,你强转成食物。没问题,因为面包本来就是食物的一种。
但是递给你一个石头,你试图强制转成食物,那么就有问题了

1、定义一个Map对象,用于存储需要转换为XML格式的数据。
2、创建一个Marshaller对象,用于将Map对象转换为XML格式。
3、创建一个StringWriter对象,用于将XML格式的数据写入到字符串中。
4、调用Marshaller对象的marshal方法将Map对象转换为XML格式,并将结果写入到StringWriter中。
5、最后,可以通过StringWriter对象的toString方法获取转换后的XML格式的字符串。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13394713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存