java list下标_Java根据list下标拆分子list的四种方式

a493737c1d3de7f8033eb5088b5f0fd0.png

根据已有的list,想根据下标截取一个子list有下列几种方式:

java.jpg

package org.4spaces;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import java.util.stream.Collectors;

public class SplitList {

/**

* 原生代码拆分

*

* @param originList 原始list

* @param fromIndex 拆分开始下标(包含)

* @param toIndex 拆分结束下标(不包含)

* @return 被拆分之后的子list

*/

public List naiveSplit(List originList, int fromIndex, int toIndex) {

List subList = new ArrayList();

if (fromIndex >= 0 && toIndex <= originList.size()) {

for (int i = 0; i < originList.size(); i++) {

if (i >= fromIndex && i < toIndex) {

subList.add(originList.get(i));

}

}

}

return subList;

}

/**

* Java List.subList

*

* @param originList 原始list

* @param fromIndex 拆分开始下标(包含)

* @param toIndex 拆分结束下标(不包含)

* @return 被拆分之后的子list

*/

public List subListSplit(List originList, int fromIndex, int toIndex) {

return originList.subList(fromIndex, toIndex);

}

/**

* Java 8 Collectors.partitioningBy

*

* @param originList 原始list

* @param fromIndex 拆分开始下标(包含)

* @param toIndex 拆分结束下标(不包含)

* @return

*/

public List partitioningBySplit(List originList, int fromIndex, int toIndex) {

Map subList = (Map) originList.stream().collect(Collectors.partitioningBy(s -> originList.indexOf(s) >= fromIndex && originList.indexOf(s) < toIndex));

return subList.get(true);

}

/**

* Java 8 Collectors.groupingBy

*

* @param originList 原始list

* @param fromIndex 拆分开始下标(包含)

* @param toIndex 拆分结束下标(不包含)

* @return

*/

public List groupingBySplit(List originList, int fromIndex, int toIndex) {

Map subList = (Map) originList.stream().collect(Collectors.groupingBy(s -> originList.indexOf(s) >= fromIndex && originList.indexOf(s) < toIndex));

return subList.get(true);

}

}

参考文章:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值