十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MapString,List dataMap = new HashMapString,List();
目前创新互联建站已为上1000+的企业提供了网站建设、域名、虚拟主机、网站托管维护、企业网站设计、信阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
for(int i=0;ixsList.size();i++){
dataMap.put(xsList.get(i).学号, xsList.get(i));
}
for(int i=0;icjList.size();i++){
dataMap.put(cjList.get(i).学号, cjList.get(i));
}
得到的dataMap就是需要插入的数据,不过以前的数据需要先删再插(而且前提是xsList和cjList泛型得相同)。
话说如果不用map还可以用一个方法:
// 成绩表的学号List
ListString cjNum = new ArrayListString();
for(int i=0;icjList.size();i++){
cjNum.add(cjList.get(i).学号);
}
for(int i=0;ixsList.size();i++){
// 学生表的学号在成绩表里存在
if(cjNum.contains(xsList.get(i).学号)){
覆盖
}else{
// 学生表的学号在成绩表里不存在
在cj表创建添加这个学生
}
}
HashMapString, String emails = new HashMapString, String();
//方法一: 用entrySet()
Iterator it = emails.entrySet().iterator();
while(it.hasNext()){
Map.Entry m=(Map.Entry)it.next();
System.out.println("email-" + m.getKey() + ":" + m.getValue());
}
// 方法二:直接再循环中
for (Map.EntryString, String m : emails.entrySet()) {
System.out.println("email-" + m.getKey() + ":" + m.getValue());
}
// 方法三:用keySet()
Iterator it = emails.keySet().iterator();
while (it.hasNext()){
String key=(String)it.next();
System.out.println("email-" + key + ":" + emails.get(key));
}
Java中遍历Map对象的4种方法:
1、通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时。
2、通过Map.keySet遍历key,通过键找值value遍历(效率低),普遍使用,二次取值。
3、如果只需要map中的键或者值,你可以通过Map.keySet或Map.values来实现遍历,而不是用entrySet。在for-each循环中遍历keys或values。
4、通过Map.entrySet使用iterator遍历key和value。
扩展资料:
关于JAVA的遍历知识补充:
1、list和set集合都实现了Iterable接口,所以他们的实现类可以使用迭代器遍历,map集合未实现该接口,若要使用迭代器循环遍历,需要借助set集合。
2、使用EntrySet 遍历,效率更高。
参考资料:
百度百科--Map(映射)
map.entrySet() 转化为 set 集合,此集合的类型为Map.Entry。之后进行遍历。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为EntryK,V。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
关于java中遍历map具体有四种方式,请看下文详解。
1、这是最常见的并且在大多数情况下也是最可取的遍历方式,在键值都需要时使用。
MapInteger, Integer map = new HashMapInteger, Integer();
for (Map.EntryInteger, Integer entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
2、在for-each循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
MapInteger, Integer map = new HashMapInteger, Integer();
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
3、使用Iterator遍历
使用泛型:
MapInteger, Integer map = new HashMapInteger, Integer();
IteratorMap.EntryInteger, Integer entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.EntryInteger, Integer entry = entries.next();
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
不使用泛型:
Map map = new HashMap();
Iterator entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("Key = " + key + ", Value = " + value);
}
4、通过键找值遍历(效率低)
MapInteger, Integer map = new HashMapInteger, Integer();
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = " + key + ", Value = " + value);
}
假设Map中的键值对为1=11,2=22,3=33,现用方法1来遍历Map代码和调试结果如下:
扩展资料:
1、HashMap的重要参数
HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。
加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。
在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101。
2、HashMap的同步机制
注意,此实现不是同步的。 如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。
(结构上的修改是指添加或删除一个或多个映射关系的任何操作;以防止对映射进行意外的非同步访问,如下:
Map m = Collections.synchronizedMap(new HashMap(...));
参考资料:百度百科-Hashmap
java根据Map的值(value)取键(key) 的实现方法有4种,分别为:
(1)使用for循环遍历
(2)使用Iterator迭代器
(3)使用KeySet迭代
(4)使用EnterySet迭代
下面为以上4种方法具体实现的代码:
1、使用for循环遍历
public static Object getKey(HashMapObject,Object map, String v) {
String key = "";
for (Map.EntryString, Object m :map.entrySet()) {
if (m.getValue().equals(v)) {
key = m.getKey();
}}
return key;
}
2、使用Iterator迭代器
public static Object getKey(HashMapObject,Object map, String v) {
Set set = map.entrySet();
Iterator iterator=set.iterator();
String key = "";
while (iterator.hasNext()) {
Map.EntryString, Object enter = (EntryString, Object)
iterator.next();
if (enter.getValue().equals(v)) {
key = enter.getKey();
}}
return key;
}
3、使用KeySet迭代
public static Object getKey(HashMapObject,Object map, String v) {
IteratorObject it = map.keySet().iterator();
while (it.hasNext()) {
String key = it.next().toString();
if ((String) map.get(key).equals(v)) return key;
}
return null;
}
4、使用EnterySet迭代
public static Object getKey(HashMapObject,Object map, String v) {
String key = "";
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Entry) it.next();
Object obj = entry.getValue();
if (obj != null obj.equals(value)) {
key = (String) entry.getKey();
}}
return key;
}
扩展资料:
java获取map的key和value的方法:
(1) 通过map.keySet()方法,先获取map的key,然后根据key获取对应的value。
for(String key : map.keySet()){
String value = map.get(key);
System.out.println(key+" "+value);
}
IteratorString iter = map.keySet().iterator();
while(iter.hasNext()){
String key=iter.next();
String value = map.get(key);
System.out.println(key+" "+value);
}
(2)通过map.entrySet()方法,循环map里面的每一对键值对,然后获取key和value。
for(EntryString, String vo : map.entrySet()) {
vo.getKey();
vo.getValue();
System.out.println(vo.getKey()+" "+vo.getValue());
}
IteratorEntryString,String iter = map.entrySet().iterator();
while(iter.hasNext()){
EntryString,String entry = iter.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+" "+value);
}
参考资料来源:JAVA官方文档-Map