将一个List>集合的每一列数据取出变成一个新的集合List>

pursuit_by_happiness 2018-07-10 11:55:36
各位大神,请教个问题:将一个List<List<String>>集合的每一列数据取出变成一个新的集合List<List<String>>
...全文
2745 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
android_cai_niao 2020-05-14
  • 打赏
  • 举报
回复
楼主大哥,问题解决了吗?解决了的话,结一下帖子吧。
luckyZQC 2020-05-14
  • 打赏
  • 举报
回复
android_cai_niao 2020-05-11
  • 打赏
  • 举报
回复
List<List<String>> 里面的元素是<123><456><789>三个小集合,楼主想要的是不是要组成<147><258><369>这样的三个小集合,然后这三个小集合再装到一个大集合中!如果是这样的话,那就要求每一个小集合的元素个数一样,解决起来也很简单,代码如下:

    public static void main(String[] args) {
        List<Integer> smallList1 = Arrays.asList(1, 2, 3);
        List<Integer> smallList2 = Arrays.asList(4, 5, 6);
        List<Integer> smallList3 = Arrays.asList(7, 8, 9);
        List<List<Integer>> bigList = Arrays.asList(smallList1, smallList2, smallList3);
        List<List<Integer>> newBigList = convert(bigList);
        System.out.println(newBigList); // 输出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    }

    private static List<List<Integer>> convert(List<List<Integer>> bigList) {
        List<List<Integer>> newBigList = new ArrayList<>();
        int size = bigList.get(0).size();
        for (int i = 0; i < size; i++) {
            List<Integer> newSmallList = new ArrayList<>();
            for (List<Integer> smallList : bigList) {
                newSmallList.add(smallList.get(i));
            }
            newBigList.add(newSmallList);
        }
        return newBigList;
    }
如果我的回答解决了您的问题,麻烦结贴给点积分,谢谢^_^
qq_18549731 2020-04-28
  • 打赏
  • 举报
回复
22222222
Ren_cy 2019-08-30
  • 打赏
  • 举报
回复
1个list集合放一个String
list集合在放一个list对象。。做什么用的?
淡青の月 2019-08-09
  • 打赏
  • 举报
回复
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
list1.add("c");
list1.add("d");
List<String> list2 = new ArrayList<>();
list2.add("e");
list2.add("f");
list2.add("g");
list2.add("h");
list2.add("i");
List<String> list3 = new ArrayList<>();
list3.add("j");
list3.add("k");
list3.add("l");
List<String> list4 = new ArrayList<>();
list4.add("m");
list4.add("n");
list4.add("o");
list4.add("p");
List<List<String>> list = new ArrayList<>();
list.add(list1);
list.add(list2);
list.add(list3);
list.add(list4);
List<List<String>> result = change(list);
for (int i = 0; i < result.size(); i++) {
System.out.println(result.get(i));
}
}

public static List<List<String>> change(List<List<String>> list){
int h = list.get(0).size();
for (int i = 1; i < list.size(); i++) {
if (list.get(i).size() > h) {
h = list.get(i).size();
}
}

String[][] arrays = new String[h][list.size()];
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).size(); j++) {
arrays[j][i] = list.get(i).get(j);
}
}

List<List<String>> results = new ArrayList<>();

for (int i = 0; i < h; i++) {
results.add(Arrays.asList(arrays[i]));
}

return results;
}
淡青の月 2019-08-09
  • 打赏
  • 举报
回复
你那个内层的list中String数量是统一的,还是每个list中的数量都不一样
还有,为啥你当初不用数组存
寄哀思 2019-08-09
  • 打赏
  • 举报
回复
两个for循环,i相同时存进一个新的list
n1333 2018-07-25
  • 打赏
  • 举报
回复
直接说矩阵转换更明白些
sj13483162817 2018-07-13
  • 打赏
  • 举报
回复
两层循环而已
weixin_42679464 2018-07-12
  • 打赏
  • 举报
回复
他的每一条数据不是List<string>型的吗?
  • 打赏
  • 举报
回复
引用 14 楼 pursuit_by_happiness 的回复:
引用 5 楼 ws_tan 的回复:
[quote=引用 4 楼 ws_tan 的回复:]
[quote=引用 2 楼 pursuit_by_happiness 的回复:]
[quote=引用 1 楼 ws_tan 的回复:]
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的

[图片][/quote][/quote]
太谢谢你了小伙伴[/quote]不用谢
dbymzss 2018-07-11
  • 打赏
  • 举报
回复
如果是的话,你把数组替换成list ,然后,里面的push(),就等同于 list的add,,,在实际调前台的东西,不方便调后台,就这么给你写了下,,,希望能解决你的问题:里面的 两种for都是遍历,你写成对应的java的for循环就行了
dbymzss 2018-07-11
  • 打赏
  • 举报
回复
用js写了一个不知道是不是你要的转换效果:
dbymzss 2018-07-11
  • 打赏
  • 举报
回复
用js写了一个,不知到是不是你要的转换效果:
maxiandXS 2018-07-11
  • 打赏
  • 举报
回复
可以cccc
若风09 2018-07-11
  • 打赏
  • 举报
回复

public void SortList(List<List<string>> sourceList, out List<List<string>> sortList)
{
sortList = new List<List<string>>();
if (sourceList == null)
return;

var sourceLenCollection = sourceList.Select(x => x.Count);
for (int i = 0; i < sourceLenCollection.Max(); i++)
{
var innerList = new List<string>();
foreach (var source in sourceList)
{
if (source.Count <= i)
continue;
innerList.Add(source[i]);
}
sortList.Add(innerList);
}
}

  • 打赏
  • 举报
回复
楼主, 别忘了结贴哦
  • 打赏
  • 举报
回复
他的每一条数据不是List<string>型的吗?
  • 打赏
  • 举报
回复
感谢热心的小伙伴
加载更多回复(14)

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧