Listの値が違う所でsplitをする方法


**Listの値が違う所でsplitをする方法**  
現在`List<Integer>`に  
`{1, 1, 1, 2, 2, 3, 3, 3, 3}`  
といった形で値が入っています。

これを 1 と 2 の間で、 2 と 3 の間それぞれで分割して、`List<List<Integer>>`と返すことは出来ないのでしょうか。。？

**ほしい結果**

[code]

    {
    [1, 1, 1],
    [2, 2],
    [3, 3, 3, 3]
    }
    
[/code]

言語はJava,Kotlinを使用しています。




特に工夫なくやれば、こんな感じですかね。

[code]

    private List<List<Integer>> convert(List<Integer> originalList) {
        if (originalList == null) {
            return null;
        }
        List<List<Integer>> newList = new ArrayList<>();
        Integer tmpNum = null;
        List<Integer> tmpList = null;
        for (Integer integer : originalList) {
            if (tmpNum == null || integer.compareTo(tmpNum) != 0) {
                tmpList = new ArrayList<>();
                newList.add(tmpList);
            }
            tmpList.add(integer);
            tmpNum = integer;
        }
        return newList;
    }
    
[/code]

