举例,两个Map结构如下
     Map mapResult1 =new HashMap();
Map mapResult2 =new HashMap();

Vector vec1 = new Vector();
Vector vec11 = new Vector();
Vector vec2 = new Vector();
Vector vec22 = new Vector();

vec1.add("1");
vec1.add("2");
vec1.add("4");
  vec11.add("10");
                vec11.add("30");
vec11.add("50");

vec2.add("3");
vec2.add("4");
                vec2.add("5");
vec2.add("6");
vec22.add("60");
vec22.add("70");
vec22.add("80");
vec22.add("90");

mapResult1.put("index", vec1);
mapResult1.put("value", vec11);

mapResult2.put("index", vec2);
mapResult2.put("value", vec22);
现在要根据mapResult2与mapResult1中index的对应关系调整mapResult1.
需要的到的Map结果如下:key为index的Vector的结构[3,4,5,6];对应key为value的Vector的结构[60,50,80,90]也就是说如果mapResult1中index在mapResult2有的,保留原有的值。如果没有就加上,如果多余,就去掉。一切以mapResult2的index为准。

解决方案 »

  1.   

    public class MapTest { private static Map ajustMap(Map map1,Map map2,String index){
    Vector vec1 = (Vector)map1.get(index);
    Vector vec2 = (Vector)map2.get(index);

    Iterator itLast = map1.entrySet().iterator();
    Iterator itThis = map2.entrySet().iterator(); while (itThis.hasNext()) {
    Map.Entry entryThis = (Map.Entry) itThis.next();
    while (itLast.hasNext()) {
    Map.Entry entryLast = (Map.Entry) itLast.next();
    Vector vecOth = (Vector) entryLast.getValue();
    Vector vecThis = (Vector) entryThis.getValue();
    if (entryThis.getKey().equals(entryLast.getKey())) {
    for (int i = 0; i < vec2.size(); i++) {
    if (vec1.contains(vec2.get(i))) {
    vecThis.set(i, vecOth.get(vec1.indexOf(vec2.get(i))));
    }
    }
    entryThis.setValue(vecThis);
    break;
    }
    }
    }
    return map2;
    } /**
     * Added by liyuanping at 2008-7-14
     * 
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Map mapResult1 =new HashMap();
    Map mapResult2 =new HashMap();

    Vector vec1 = new Vector();
    Vector vec11 = new Vector();
    Vector vec2 = new Vector();
    Vector vec22 = new Vector();

    vec1.add("port1");
    vec1.add("port2");
    vec11.add("aa");
    vec11.add("bb");

    vec2.add("port1");
    vec2.add("port4");
    vec2.add("port5");
    vec2.add("port2");
    vec22.add("cc");
    vec22.add("dd");
    vec22.add("ee");
    vec22.add("ee");

    mapResult1.put("index", vec1);
    mapResult1.put("value", vec11);

    mapResult2.put("index", vec2);
    mapResult2.put("value", vec22);

    System.out.println(mapResult2);
    System.out.println(mapResult1);

    System.out.println(ajustMap(mapResult2,mapResult1,"index"));
    }}
    自己顶下。无聊的问题