Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中从行集创建树的最佳方法_Java_List_Dictionary_Data Processing - Fatal编程技术网

在Java中从行集创建树的最佳方法

在Java中从行集创建树的最佳方法,java,list,dictionary,data-processing,Java,List,Dictionary,Data Processing,假设我有一个Java列表,如下所示: [ [A, AA, 10], [A, AB, 11], [B, BA, 20], [A, AA, 12], ] { A: { AA: [10, 12] AB: [11] }, B: { BA: [20] } } 我想处理每一行以创建映射的映射,这样我可以按如下方式处理每一行中的最后一个值: [ [A, AA, 10], [A,

假设我有一个Java列表,如下所示:

[
    [A, AA, 10],
    [A, AB, 11],
    [B, BA, 20],
    [A, AA, 12],
]
{   
    A: { 
       AA: [10, 12]
       AB: [11]
    },
    B: {
       BA: [20]
    }
}
我想处理每一行以创建映射的映射,这样我可以按如下方式处理每一行中的最后一个值:

[
    [A, AA, 10],
    [A, AB, 11],
    [B, BA, 20],
    [A, AA, 12],
]
{   
    A: { 
       AA: [10, 12]
       AB: [11]
    },
    B: {
       BA: [20]
    }
}
通过这种方式,我可以进行如下呼叫:

for (int i : map.get("A").get("AA")) { ... }
当然,我可以迭代列表并手动创建地图。然而,这是一段非常难看的代码,很难将其推广到
3,4,5,…,n


有没有聪明的方法来处理这些列表?某种类型的库或其他我没有想到的东西?

另一段相当难看的代码:-)

类自定义树{
私人最终地图商店;
私有最终整数长度;
公共自定义树(列表源,整数长度){
如果(长度<2)
抛出新的IllegalArgumentException(“长度必须大于2”);
这个长度=长度;
this.store=new HashMap();
对于(int i=0;i
用法

公共类主{
公共静态void main(字符串[]args){
列表源=新的ArrayList();
List first=Arrays.asList(“A”、“AA”、“CB”、“10”);
List second=Arrays.asList(“A”、“AB”、“CB”、“11”);
第三个列表=数组。asList(“BA”、“BA”、“CB”、“20”);
第四个列表=数组.asList(“A”、“AA”、“CB”、“12”);
List fifth=Arrays.asList(“BA”、“BA”、“CB”、“21”);
来源.添加(第一);
来源.添加(第二);
资料来源.添加(第三);
资料来源:加(第四);
资料来源:加(第五);
CustomTree树=新CustomTree(来源,4);
System.out.println(tree.get(Arrays.asList(“BA”、“BA”、“CB”)));
System.out.println(tree.get(Arrays.asList(“BA”、“B”、“sf”)));
}
}

可能太难看了。它只在需要树的最后一个元素而不需要任何中间映射时工作。

另一段相当难看的代码:-)

类自定义树{
私人最终地图商店;
私有最终整数长度;
公共自定义树(列表源,整数长度){
如果(长度<2)
抛出新的IllegalArgumentException(“长度必须大于2”);
这个长度=长度;
this.store=new HashMap();
对于(int i=0;i
用法

公共类主{
公共静态void main(字符串[]args){
列表源=新的ArrayList();
List first=Arrays.asList(“A”、“AA”、“CB”、“10”);
List second=Arrays.asList(“A”、“AB”、“CB”、“11”);
第三个列表=数组。asList(“BA”、“BA”、“CB”、“20”);
列表四=数组