重写自定义对象的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属性的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)