前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Guava常用集合操作API

Guava常用集合操作API

作者头像
JavaEdge
发布2021-10-18 15:48:15
2450
发布2021-10-18 15:48:15
举报
文章被收录于专栏:JavaEdge

Lists

partition

将list集合按指定长度进行切分,返回新的List<List<??>>集合,如下的:

代码语言:javascript
复制
import com.google.common.collect.Lists;
import org.junit.Test;
import java.util.List;

public class testList {
 
    @Test
    public void  test(){
        List<Integer> numList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8);
        List<List<Integer>> lists=Lists.partition(numList,3);
        System.out.println(lists);
        //[[1, 2, 3], [4, 5, 6], [7, 8]]
    }
}

坑: 项目中使用 Lists.Partition 批量处理数据,但是最近内存一直 OutOffMemory,GC无法回收。 后来对使用过的集合手动 clear,没有测试直接就上线了。尴尬的是内存回收了,但是跑出来的数据出问题了。 最后自己单元测试发现是

代码语言:javascript
复制
List<List<TreasureIntegrationVo>> resultPartition = Lists.partition(list, 500) 

之后再对 list 进行 clear 操作,resultPartition也会被清空。因为它最终会调用 list.subList。subList 执行结果是获取 ArrayList 的一部分,返回的是 ArrayList 的部分视图。 对子集合的操作会反映到原集合, 对原集合的操作也会影响子集合!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lists
    • partition
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档