把一个list里的数据按照相同的元素分组

比较常见的场景是表格,我们通过一个sql或者多个sql查出一个集合的数据如下图。数据的总数是(行*列)13*10。我们需要行转列。利用group by。然后根据行的标识来再次分组。那么返回的是一个list嵌套一个list。最大的list长度是13,list里面的list长度是10前端拿来直接用即可。下面是一个简单的代码。

把一个list里的数据按照相同的元素分组_第1张图片

public class Fenzu {
    static List list = new ArrayList();
    static List> resultList = new ArrayList<>();
    public static void main(String[] args) {
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("c");
        //临时变量
        String temp = list.get(0);
        Integer index = 0;
        List listTemp = new ArrayList<>();
        for (String str : list) {
            index++;
            if (temp == str) {
                listTemp.add(str);
                if (index >= list.size()) {
                    resultList.add(listTemp);
                }
            } else {
                if (listTemp.size() > 0) {
                    resultList.add(listTemp);
                }
                temp = str;
                listTemp = new ArrayList<>();
                listTemp.add(str);
            }
        }
        for (int i = 0; i < resultList.size(); i++) {
            System.out.println(resultList.get(i).get(0));
            System.out.println(resultList.get(i).get(1));
        }
    }
}

注意的是:我们查找的数据必须是相同的在一起。也就是按照下面列子的方式排列的。大多数适用于sql查找的数据,而非错乱的数据。如果list里面的数据不是a,a, b,b, c,c这样规律性的排序 那么此方法不适用。

你可能感兴趣的:(把一个list里的数据按照相同的元素分组)