`
xurichusheng
  • 浏览: 336099 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java8 批量处理

阅读更多

java8 批量处理

 

import java.util.AbstractMap;

import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public static <T> void divideBatchHandler(List<T> dataList, Consumer<List<T>> consumer, int size) {
	Optional.ofNullable(dataList)
			.ifPresent(list -> IntStream.range(0, list.size())
					.mapToObj(i -> new AbstractMap.SimpleImmutableEntry<>(i, list.get(i)))// 给数据编号
					.collect(Collectors.groupingBy(e -> e.getKey() / size,
							Collectors.mapping(Map.Entry::getValue, Collectors.toList()))) // 按编号分批并合并编号对应的值
					.values().parallelStream()// 并行处理
					.forEach(consumer) // 执行处理函数
			);
}

 

调用:

 

@Test
public void batchHandle() {
	/* 批量处理测试 */
	List<String> list = new ArrayList<>();//projectMongodbDao.findAll();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("d");
	// 批量处理
	CommonUtils.divideBatchHandler(list, (x) -> print(x), 3);
}

private void print(List<String> list) {
	System.out.println(list);
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics