List集合按指定数量分组

   

/**

      * List集合按指定数量分组

      * @param list

      * @param quantity

      * @return

      */

    private List<List<String>> groupListByQuantity(List<String> list, int quantity) {

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

        if (list == null || list.size() == 0) {

            return tempList;

        }

        int count = 0;

        while (count < list.size()) {

            tempList.add(list.subList(count, Math.min((count + quantity), list.size())));

            count += quantity;

        }

        return tempList;

    }

 

### 使用 Java Stream API 进行分组并计数 当处理集合数据时,`Stream API` 提供了一种简洁而强大的方式来执行诸如过滤、映射以及聚合操作。对于按照特定属性进行分组并且计算每组内元素数量的需求,可以利用 `Collectors.groupingBy()` 结合 `Collectors.counting()` 来实现。 下面是一个简单的例子展示如何基于对象的一个字段来进行分组,并统计各组中的元素数目: ```java import java.util.*; import java.util.stream.Collectors; class Item { private String name; public Item(String name){ this.name = name; } public String getName(){ return name; } } public class Main { public static void main(String[] args) { List<Item> items = Arrays.asList(new Item("apple"), new Item("banana"), new Item("apple")); Map<String, Long> counting = items.stream() .collect(Collectors.groupingBy(Item::getName, Collectors.counting())); System.out.println(counting); } } ``` 这段代码创建了一个名为 `items` 的列表,其中包含了若干个 `Item` 对象实例。接着通过流的方式调用了 `groupingBy` 方法指定按 `name` 属性分组的同时应用了 `counting` 收集器用于记录每一组里有多少项[^1]。 如果希望进一步扩展此功能,比如依据多个条件进行分组,则可以根据需求调整参数传递给 `groupingBy` 函数。例如,在另一个案例中展示了怎样根据两个不同属性组合成键值对的形式完成多级分类的任务[^2]。 为了获取更灵活的结果呈现形式,还可以考虑先收集到临时结构再转换为目标类型的数据结构,如上述第二个引用所示的操作流程。 最后值得注意的是,有时可能还需要对最终得到的地图按键或值做额外排序处理;此时可参考关于如何在 Java 中对地图条目排序的相关讨论[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值