相关疑难解决方法(0)

Java 8在分组时不维护顺序

我使用Java 8进行数据分组.但获得的结果不是按顺序形成的.

Map<GroupingKey, List<Object>> groupedResult = null;

        if (!CollectionUtils.isEmpty(groupByColumns)) {

            Map<String, Object> mapArr[] = new LinkedHashMap[mapList.size()];

            if (!CollectionUtils.isEmpty(mapList)) {
                int count = 0;
                for (LinkedHashMap<String, Object> map : mapList) {
                    mapArr[count++] = map;
                }
            }
            Stream<Map<String, Object>> people = Stream.of(mapArr);
            groupedResult = people
                    .collect(Collectors.groupingBy(p -> new GroupingKey(p, groupByColumns), Collectors.mapping((Map<String, Object> p) -> p, toList())));


public static class GroupingKey 

        public GroupingKey(Map<String, Object> map, List<String> cols) {

            keys = new ArrayList<>();

            for (String col : cols) {
                keys.add(map.get(col));
            }
        }

        // Add …
Run Code Online (Sandbox Code Playgroud)

grouping collect java-8 java-stream

22
推荐指数
2
解决办法
2万
查看次数

分组后流不保留顺序

我有一个List名称availableSeats我正在通过blockIndex属性进行排序和分组,如下所示:

availableSeats.stream()
                .sorted(Comparator.comparing(SeatedTicketAssignment::getBlockIndex))
                .collect(Collectors.groupingBy(SeatedTicketAssignment::getBlockIndex))
                .forEach((block, blockAssignments) -> {
                     //Rest of the code
                } 
Run Code Online (Sandbox Code Playgroud)

问题是分组的结果不是由blockIndex排序的.

java java-stream

6
推荐指数
1
解决办法
3539
查看次数

标签 统计

java-stream ×2

collect ×1

grouping ×1

java ×1

java-8 ×1