碰到的问题:
要把下面的集合
[[1],[1,1],[1,2,1],[1,2],[1,1,2],[1,1,1,1]]
整理成:像树状一样如下
[[1],[1,1],[1,1,1,1],[1,1,2],[1,2],[1,2,1]]
想法
1.我获取到集合里面最大集合合并后的位数长度
2.将它们的集合全部合并比较最大位数长度
3.长度不够的转为字符串向右补零,生成MAP 当做Key值,原集合作为Value
4.利用treeMap的特性进行排序
5.最后返回值
废话不多说直接上代码:
//先初始化集合
String array="[[1],[1,1],[1,2,1],[1,2],[1,1,2],[1,1,1,1]]";
List<List> data=JSON.parseArray(array,List.class);
//拿到最大长度
int maxSize = data.stream().mapToInt(List::size).summaryStatistics().getMax();
//结果集
Map<String,List<Integer>> map=new TreeMap<>();
for (List<Integer> item : data) {
StringBuilder num= new StringBuilder(StringUtils.join(item, ""));
for (int i=num.length();i<maxSize;i++){
num.append("0");
}
map.put(num.toString(),item);
}
//取值
for (List<Integer> list:map.values()) {
System.err.println(list);
}
这就是以上代码,肯定有大佬又别的更简单简洁的代码,可以私聊我,或者评论下来,我们一起进步,感谢。 我是努力奋斗的程序猿