当前位置:编程学习 > JAVA >>

求助,map合并的问题

--------------------编程问答-------------------- 数据规模如何?
数据规模小的真是遍历一下能实现功能就算了 --------------------编程问答-------------------- 规模不会很大,我估计顶多有4个,如何遍历?我试了半天没搞定 --------------------编程问答-------------------- 迭代遍历咯
先扫第一行,里面每个元素e都 map.get()
get到就新建个 map<e,get> 将e替换掉
再遍历get到的list的元素
做个List<List<Integer>> ited将已经遍历过的List记录,免得重复遍历作为值的List,这样就算我key值出现在value里又如何?我发现ited遍历过我就不会再遍历,不会死循环 --------------------编程问答-------------------- 兄弟,我搞定了。多谢。 --------------------编程问答-------------------- 主要还是数据结构的定义,我简单实现了下,看是否符合你的要求:

package cn.pis.file;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class A {
    public static void main(String args[]) {
        map = new LinkedHashMap<Integer, Integer[]>();
        map.put(11, new Integer[] { 12, 13, 14 });
        map.put(14, new Integer[] { 15, 16 });
        map.put(16, new Integer[] { 17, 18 });
        map.put(18, new Integer[] { 20, 21 });

        B b = mapToB(map);
        //b:{11=[{12=null}, {13=null}, {14=[{15=null}, {16=[{17=null}, {18=[{20=null}, {21=null}]}]}]}]}
        System.out.println(b);
    }

    static Map<Integer, Integer[]> map;

    private static B mapToB(Map<Integer, Integer[]> map) {
        // 假如你的数据具有某些特定意义,此处key按从小到大遍历
        B b = new B();
        b.key = map.keySet().iterator().next();
        fill(b, map.get(b.key));
        return b;
    }

    private static void fill(B b, Integer[] vs) {
        List<B> children = new ArrayList<B>();
        b.childern = children;
        for (Integer v : vs) {
            B child = new B();
            child.key = v;
            children.add(child);
            if (map.containsKey(v)) {
                fill(child, map.get(v));
            }
        }
    }
}

class B {
    Integer key;
    List<B> childern;

    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{" + key + "=");
        sb.append(childern).append("}");
        return sb.toString();
    }
}
--------------------编程问答-------------------- 遍历一下能实现功能吗,也可百度下有关算法,如果对效率要求不是很严一般算法度可以百度到的,
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,