解决方案 »
- jfreechat 柱子图上的lable怎么能斜着写啊?有原程序啊
- 高分请教:hibernate 采用nativesql进行查询的问题
- 问一个很菜的问题!!
- 关于JTabbedPanel的问题
- 在applet 中可以实现打印么?请高手指点
- 菜鸟问题:对于float型的变量,如何对其保留小数点后二位有效数字,并对第三位进行四舍五入操作?
- 为什么类中定义的属性直接赋值与在方法中赋值会有不同
- 新写的 阿老伯数字到人民币大写的程序
- java XML问题
- 急......收Email问题
- 关于DefaultTableModel的addRow的问题
- Java如何动态的调用方法,有很多方法参数和名字都不一样。有什么比较简单的方式动态调用吗?
先扫第一行,里面每个元素e都 map.get()
get到就新建个 map<e,get> 将e替换掉
再遍历get到的list的元素
做个List<List<Integer>> ited将已经遍历过的List记录,免得重复遍历作为值的List,这样就算我key值出现在value里又如何?我发现ited遍历过我就不会再遍历,不会死循环
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();
}
}