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

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

重写自定义对象的hashcode()方法,让内容相同的对象返回一样的hashcode默认情况自定义对象是以内存地址为hashcode,你“重新创建一个一样的对象”,存在“重新创建”就会导致对象不一样所以要重写覆盖hashcode方法才能获取到map值

另外,也可以低层一点,你的自定义对象上设一个int

id属性

而Map转为以id为键,比如Map<int,

Value>。

map中存储的是键值对,也就是说通过set方法进行参数和值的存储,之后通过get“键”的形式进行值的读取。举例:

Map map = new Hashmap();//创建一个map

mapput("key","value");//给map赋值

String vlaues = mapget("key");//获取map中键值为“key”的值

systemoutprintln(vlaues );//输出结果

以上代码的运行结果:value;

备注:map中可以存放是字符串,也可以存放的是对象,这个根据实际需要进行调整即可,也可以通过”<T>“的形式来进行对象转换,这个在特定场景下进行特定转换即可。

<s:iterator value="elist" id="ex">

<s:property value="key" /> <!--迭代map key-->

<s:property value="value" /> <!--迭代 map value-->

</s:iterator>

我用的是struts2标签,要是没有struts包,可以用:

<c:forEach var="item" items="${map}">

${itemkey}

</c:forEach>

public static void main(String[] args) {

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

mapput("key1", "value1");

mapput("key2", "value2");

mapput("key3", "value3");

Set<String> keySet = mapkeySet();

int i = mapsize()-1;

Map<Integer, String> mapKey = new HashMap<Integer, String>();

Map<Integer, String> mapValue = new HashMap<Integer, String>();

for(javautilMapEntry<String, String> entry : mapentrySet()) {

//将原来MAP的VALUE放入新的MAP的VALUE里面

mapKeyput(i, entrygetValue());

//将原来MAP的KEY放入新的MAP的VALUE 里面

mapValueput(i, entrygetKey());

i--;

}

//打印KEY值

Systemoutprintln(mapKeyget(2));

//打印VALUE值

Systemoutprintln(mapValueget(0));

}

扩展资料:

java键值对的使用

Map集合没有继承Collection接口,但是其提供了key到value的映射。每一个key不能有相同,每个key只能映射一个value值。

下面通过一个程序来说明键值对的使用,下面是一个基本的键值对应用程序:

package Test;

import javautilCollection;

import javautilHashMap;

import javautilIterator;

import javautilMap;

import javautilSet;

public class KeyValue {

public static void main(String[] args) {

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

mapput("01", "张三");

mapput("02", "王五");

Set<String> set=mapkeySet();

Iterator <String> it=setiterator();

Systemoutprintln("key中集合元素:");

while(ithasNext()){

Systemoutprintln(itnext());

}

Collection <String> coll=mapvalues();

it=colliterator();

Systemoutprintln("value中集合元素:");

while(ithasNext()){

Systemoutprintln(itnext());

}

}

}

输出结果如图所示:

在EL中,方括号运算符用来检索数组和集合的元素。对于实现 javautilMap 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。

在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${map['key']} 返回与 map标识符所引用的 Map 中的 "key" 键相关联的值。

当forEach 的items属性中的表达式的值是javautilMap时,则var中命名的变量的类型就是 javautilMapEntry。这时var=entry的话,用表达式${entrykey}取得键名。用表达${entryvalue}得到每个entry的值。这是因为javautilMapEntry对象有getKey和getValue方法,表达式语言遵守JavaBean的命名约定。

<%

Map<String,String> map2 = new HashMap();

map2put("a","hello world");

map2put("b","this is map");

requestsetAttribute("map2",map2);

%>

<br>

键值对遍历 <br>

<c:forEach var="item" items="${map2}">

${itemkey} > ${itemvalue} <br>

</c:forEach>

键遍历 <br>

<c:forEach var="item" items="${map2}">

${itemkey}<br>

</c:forEach>

值遍历 <br>

<c:forEach var="item" items="${map2}">

${itemvalue}<br>

</c:forEach>

<body>

<br><br>

<%

List<String> list = new ArrayList<String>();

listadd("first");

listadd("second");

List<String> list2 = new ArrayList<String>();

list2add("aaaaaa");

list2add("bbbbbb");

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

mapput("a",list);

mapput("b",list2);

requestsetAttribute("map",map);

%>

通过键获得列表值,并遍历列表 <br>

<c:forEach var="item" items="${map['a']}">

${item }<br>

</c:forEach><br>

<c:forEach var="item" items="${map['b']}">

${item }<br>

</c:forEach> <br>

map中值为列表,直接遍历列表中的每一项 <br>

<c:forEach var="item" items="${map}">

<c:forEach items="${itemvalue}" var="it">

${it }<br>

</c:forEach>

</c:forEach>

将Map集合的键和值分别取出来方法:

public static List smallMapUtil(Map rsMap){

        List temp = new ArrayList();

        Iterator iter = rsMapentrySet()iterator();

        while(iterhasNext()){

            MapEntry entry = (MapEntry) iternext();

            tempadd(entrygetKey());

        }

        return temp;

    }

举个例子:

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

先拿所有的键:

Integer[] keys = mapkeySet()toArray(new Integer[0]);

然後随机一个键,找出该值:

Random random = new Random();

Integer randomKey = keys[randomnextInt(keyslength)];

String randomValue = mapget(randomKey);

//第一种:普遍使用,二次取值

Systemoutprintln("通过MapkeySet遍历key和value:");

for (String key : mapkeySet()) {

Systemoutprintln("key= "+ key + " and value= " + mapget(key));

}

//第二种

Systemoutprintln("通过MapentrySet使用iterator遍历key和value:");

Iterator<MapEntry<String, String>> it = mapentrySet()iterator();

while (ithasNext()) {

MapEntry<String, String> entry = itnext();

Systemoutprintln("key= " + entrygetKey() + " and value= " + entrygetValue());

}

以上就是关于java中的Map的键如果是自己写的一个类的对象,怎么根据这个键获取值全部的内容,包括:java中的Map的键如果是自己写的一个类的对象,怎么根据这个键获取值、java中Hashmap的get方法、在jsp页面中获得对象中MAP属性的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9336828.html

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

发表评论

登录后才能评论

评论列表(0条)

保存