广告
淘宝内部优惠券
当前位置: 开发异常方案库» Java » 将一个List>集合的每一列数据取出变成一个新的集合List>

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

开发异常方案库  收集整理于:2020-05-14 14:42:00  浏览:66次
各位大神,请教个问题:将一个List<List<String>>集合的每一列数据取出变成一个新的集合List<List<String>>

------网友观点--------------------
他的每一条数据不是List<string>型的吗?

------网友观点--------------------
引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的

------网友观点--------------------
你是想要把里面的数据放在一个新的list集合里面吗?

------网友观点--------------------
引用 2 楼 pursuit_by_happiness 的回复:
Quote: 引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的
[图片]

------网友观点--------------------
引用 4 楼 ws_tan 的回复:
Quote: 引用 2 楼 pursuit_by_happiness 的回复:
Quote: 引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的
[图片]

------网友观点--------------------
引用 5 楼 ws_tan 的回复:
Quote: 引用 4 楼 ws_tan 的回复:
Quote: 引用 2 楼 pursuit_by_happiness 的回复:
Quote: 引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的
[图片]
重点是里面的元素的转换同学,例如:List<List<String>> 里面的元素是<123><223><423>,我是想把这三个集合的第一个位置上的取出来放到一个新集合中,第二个第三个位置同理。

------网友观点--------------------
引用 6 楼 pursuit_by_happiness 的回复:
Quote: 引用 5 楼 ws_tan 的回复:
Quote: 引用 4 楼 ws_tan 的回复:
Quote: 引用 2 楼 pursuit_by_happiness 的回复:
Quote: 引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的
[图片]
重点是里面的元素的转换同学,例如:List<List<String>> 里面的元素是<123><223><423>,我是想把这三个集合的第一个位置上的取出来放到一个新集合中,第二个第三个位置同理。
链接: https://pan.baidu.com/s/1Ppkkp75YiM8R1_HjIgS1UA 密码: d599

------网友观点--------------------
重新给你发个链接 链接: https://pan.baidu.com/s/1LdVOP39yB8C2CGOwnOLYIA 密码: hcy2

------网友观点--------------------
又疯了一个。。。做这个有啥意义么?

------网友观点--------------------
引用 9 楼 weixin_40852944 的回复:
又疯了一个。。。做这个有啥意义么?
哈哈 过滤结果呀

------网友观点--------------------
List.addAll()

------网友观点--------------------
引用 10 楼 pursuit_by_happiness 的回复:
Quote: 引用 9 楼 weixin_40852944 的回复:
又疯了一个。。。做这个有啥意义么?
哈哈 过滤结果呀
如果是过滤结果,你看下这样行不行。。。把456 这个过滤掉了
public static void main(String[] args) {
        List<List<String>> lists = new ArrayList<>();
        List<String> var0 = new ArrayList<>();
        List<String> var1 = new ArrayList<>();
        List<String> var2 = new ArrayList<>();
        var0.add("123");
        var1.add("456");
        var2.add("789");
        lists.add(var0);
        lists.add(var1);
        lists.add(var2);
        List<List<String>> result = lists.stream().filter(V->{
            return !"456".equalsIgnoreCase(V.get(0));
        }).collect(Collectors.toList());
        System.out.println(result);
    }

------网友观点--------------------
引用 12 楼 weixin_40852944 的回复:
Quote: 引用 10 楼 pursuit_by_happiness 的回复:
Quote: 引用 9 楼 weixin_40852944 的回复:
又疯了一个。。。做这个有啥意义么?
哈哈 过滤结果呀
如果是过滤结果,你看下这样行不行。。。把456 这个过滤掉了
public static void main(String[] args) {
        List<List<String>> lists = new ArrayList<>();
        List<String> var0 = new ArrayList<>();
        List<String> var1 = new ArrayList<>();
        List<String> var2 = new ArrayList<>();
        var0.add("123");
        var1.add("456");
        var2.add("789");
        lists.add(var0);
        lists.add(var1);
        lists.add(var2);
        List<List<String>> result = lists.stream().filter(V->{
            return !"456".equalsIgnoreCase(V.get(0));
        }).collect(Collectors.toList());
        System.out.println(result);
    }
换另一种思路实现了,不过太感谢了小伙伴

------网友观点--------------------
引用 5 楼 ws_tan 的回复:
Quote: 引用 4 楼 ws_tan 的回复:
Quote: 引用 2 楼 pursuit_by_happiness 的回复:
Quote: 引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的
[图片]
太谢谢你了小伙伴

------网友观点--------------------
private static List<List<String>> transposeStr(List<List<String>> resources) {
		List<List<String>> converts = new LinkedList<List<String>>();
		List<String> newList;
		int i = 0;
		for (List<String> list : resources) {
			int j = 0;
			for (String str : list) {
				newList = i == 0 ? new LinkedList<String>() : converts.get(j);
				newList.add(str);
				if (i == 0) {
					converts.add(newList);
				}
				j++;
			}
			i++;
		}
		return converts;
	}
试试看

------网友观点--------------------
感谢热心的小伙伴

------网友观点--------------------
引用 14 楼 pursuit_by_happiness 的回复:
Quote: 引用 5 楼 ws_tan 的回复:
Quote: 引用 4 楼 ws_tan 的回复:
Quote: 引用 2 楼 pursuit_by_happiness 的回复:
Quote: 引用 1 楼 ws_tan 的回复:
他的每一条数据不是List<string>型的吗?
想要得到的结果是List<String>型的
[图片]
太谢谢你了小伙伴
不用谢

------网友观点--------------------
楼主, 别忘了结贴哦

------网友观点--------------------
        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);
            }
        }

------网友观点--------------------
可以cccc

------网友观点--------------------
用js写了一个,不知到是不是你要的转换效果:

------网友观点--------------------
用js写了一个不知道是不是你要的转换效果:

------网友观点--------------------
如果是的话,你把数组替换成list ,然后,里面的push(),就等同于 list的add,,,在实际调前台的东西,不方便调后台,就这么给你写了下,,,希望能解决你的问题:里面的 两种for都是遍历,你写成对应的java的for循环就行了

------网友观点--------------------
他的每一条数据不是List<string>型的吗?

------网友观点--------------------
两层循环而已

------网友观点--------------------
直接说矩阵转换更明白些

------网友观点--------------------
两个for循环,i相同时存进一个新的list

------网友观点--------------------
你那个内层的list中String数量是统一的,还是每个list中的数量都不一样 还有,为啥你当初不用数组存

------网友观点--------------------
    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;     }

------网友观点--------------------
1个list集合放一个String   list集合在放一个list对象。。做什么用的?

------网友观点--------------------
22222222

------网友观点--------------------
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;
    }
如果我的回答解决了您的问题,麻烦结贴给点积分,谢谢^_^

------网友观点--------------------

------网友观点--------------------
楼主大哥,问题解决了吗?解决了的话,结一下帖子吧。
发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
软件开发 程序错误 异常 ybaby.netCopyright © 2020-2026  ybaby 版权所有  桂ICP备17004385号-2 网站地图