java8 list切片_模版模式构建可复用性大集合切片循环,使用java8 lambda去调用可以更加简洁哦...

本文探讨如何使用Java8的Lambda表达式简化List的切片操作,通过模板模式实现可复用的代码段,减少重复代码。文章提供了一个具体的例子,展示如何在不采用模板模式时会出现大量重复代码(Repeat Code R),然后通过定义SubListFuntion接口和dealForSubList方法,将业务逻辑与切片操作解耦。示例中展示了如何在Java8中使用Lambda改进这一过程。
摘要由CSDN通过智能技术生成

面向过程的编程思路相信大家都不陌生,随着脚本语言的盛行,面向过程的编程开始火起来了,面向过程并不是说我的代码就不面向对象了,可以把通用性的地方面向对象的思路封装,局部可复用性少的代码面向过程去编写组装。

相信用过google gauva的程序员对Lists.transfer并不陌生,这样的面向过程的语法在java8后可以非常的美丽。

其实咱们在工作中有很多过程是可抽象剥离,往往因为局部业务不同造成相当多的代码重复,这时候应该采用面向过程编程去解决这个问题。

下面这块代码在开发过程中如果不采用一定的设计模式 repeat code R会出现在我们的系统各个角落,于是乎采用模版模式来剥离变化的地方。package com.qunar.piao.sight.common.util;

import com.google.common.annotations.GwtCompatible;

import org.apache.xmlbeans.impl.xb.xsdschema.Public;

import java.util.Collection;

import java.util.List;

/**

* Created by yubin.qi on 2015/4/15.

*/

public class SubListUtil {

//Function super F, ? extends T>

public static interface SubListFuntion {

public  void processor(List tList);

}

public static  void dealForSubList(List totalList, Integer subSize, SubListFuntion subFuntion) {

//repeat code R--START

int count = totalList.size();

int iteratorCount = count / subSize;

for (int i = 0; i <= iteratorCount; i++) {

int endIndex, startIndex;

startIndex = i * subSize;

endIndex = ((endIndex = (i + 1) * subSize) > count) ? count : endIndex;

if (endIndex == startIndex) {

break;

}

List subList = totalList.subList(startIndex, endIndex);

//---A bussiness code start

subFuntion.processor(subList);

//---A bussiness code end

}

//repeat code R--END

}

public static void main(String args[]) {

List as = null;

SubListUtil.dealForSubList(as, 1000, new SubListFuntion() {

@Override

public void processor(List strings) {

//you want write code! or you defined method!

}

});

//java8

SubListUtil.dealForSubList(as, 1000, (strings)->{

//you want write code! or you defined method!

}));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值