java 怎么让两个map的数据保持一致

是这样的:A\B两个map, A map的value是B map的key。怎么保证A map删除一条数据,B的那条也自动跟着删除呢。

如果两个MAP在内存中有自己独立的空间,那么可以为map添加自定义事件,当其中一个MAP内容发生变化时,自动更新另一个MAP.
但是这样没有太大的意义..因为在一定时间内,内容完全相同的MAP完全可以由空间相同(既同一内存空间,变量引用相同)的MAP代替且效率更高!
如果有特殊用途的情况,可以考虑添加自定义事件后,做延迟更新操作.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-27
要不你让A B指向同一个map,例如:
Map map1=new HashMap();
A=map1;
B=map1;
第2个回答  2012-12-28
B.remove(A.remove());你试试,如果我没记错的话remove的返回值是value,又因为A的value是B的key,然后就直接调用B的remove
第3个回答  2012-12-27
map1=map2;
第4个回答  2012-12-27
Map map1 = new HashMap(); //假设你已知该map的内容
Map map2 = new HashMap(); //假设你已知该map的内容

//如果你要让两个map数据保持一致,最简单的办法
//第一种
map1 = map2 //这个很简单,我就不解释了
//第二种 使用遍历方法,一个一个copy过去.不建议使用

for(Map map : map2){
map1.put();//copy数据
}

希望能帮到你!
祝:早日解决难题!

java 怎么让两个map的数据保持一致
如果两个MAP在内存中有自己独立的空间,那么可以为map添加自定义事件,当其中一个MAP内容发生变化时,自动更新另一个MAP.但是这样没有太大的意义..因为在一定时间内,内容完全相同的MAP完全可以由空间相同(既同一内存空间,变量引用相同)的MAP代替且效率更高!如果有特殊用途的情况,可以考虑添加自定义事件后,...

Java 多线程 MAP 同步
1: 有循环操作时,所有对map操作放到synchronized 块里。synchronized (map) { \/\/操作 } 2:没有循环操作时可以直接使用这个方法,然后象普通map一样使用就行。Collections.synchronizedMap(new HashMap());

合并两个hashmap,重复的值只显示一项。
如果是想保持原来的不变,可以先新建一个空的hashmap,把map1和map2的数据都加进去就可以了 HashMap map3 = new HashMap();for (Object key : map1.keySet())map3.put(key, map1.get(key));for (Object key : map2.keySet())map3.put(key, map2.get(key));可以根据具体的类型加上...

java Map复制的问题
使用put方法,是将同样的对象从popSizeChoice放到MpopSizeChoice中,两个map是两个不同的引用,但是里面保存的对象还是指向同一个引用。所以调用add方法对这个同一个对象进行add的时候,两个map里都会更新。要解决这个办法,map里存放的set也必须new一个新的,然后调用putAll方法得到一个拷贝。

在Java中为何修改方法内的Map也会改变原Map?
让我们看一个代码示例:创建一个Map,然后调用一个方法changeMap,将Map传递进去。在changeMap中,我们添加新的键值对,然后在主函数中观察。你会发现,原Map和修改后的Map是一致的,因为方法内部操作的是引用,而非独立的副本。为了在方法中避免影响原Map,我们需要进行拷贝。Java提供了浅拷贝(如通过...

java如何写两个map比较?
Map<String, String> h2 = new Hashtable<String, String>();h1.put("KEY1", "VALUE2");h1.put("KEY2", "VALUE2");h1.put("KEY3", "VALUE3");h2.put("KEY2", "VALUE2");Set<String> keySet = h1.keySet();for (String key : keySet) { \/\/ 方法一 if (h2....

java map添加另外一个map不合并
不可以。这是不可能的,不过可以换个思路,比如你的value存数组或者集合,把两个值存在一个集合或者数组,放进map里,一个单值不可能融合另一个值,没法融合的都是map值不一样的如果强制加入的话,系统有可能蹦。

Java中每次运行同一个程序,random函数产生的数据是一样的。
每次运行到这一句的时候map会把之前的覆盖掉,比如你第一次放进去set值是1,2,3,4,5,第二次过来的时候set值是6,7,8,9,10的话,他会把之前的覆盖掉,造成第一次第二次的数值一样。所以你map放的数据最后都变成最后一次放进去的数据。建议改成如下代码 public static void main(String[] args...

java 两个Map进行比较
第一步,循环Map1的key,取得key;第二部,根据key取得对应的List;第三部,循环List,取出List中的每一项SoftWare跟另外一个Map比较。如果另外一个Map中没有则创建一个LIst,并加入到该List中,最后将该List放入Map3中。代码:import java.util.*;public class Test2 { public static void main(...

java程序设计问题,查找两个list属性值相同的元素,并对差异
方法三:使用HashMap 使用HashMap通过将每个元素作为键,其出现次数作为值存储,遍历HashMap找出出现次数大于1的元素,即为重复元素。以下代码展示了使用HashMap的实现:这种方法保持了元素原始顺序,但在处理大量数据时可能消耗较多内存。本文由华为云社区提供,标题为《如何用Java找出两个List中的重复元素,...

相似回答