在Java中从行集创建树的最佳方法
假设我有一个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,
[
[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”);
列表四=数组