Java平均拆分list

为了使用并发计算,有时候需要对list做拆分。而java中默认的subList方法满足不了这种需求,那就自己动手写一个吧。

package demo18;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.python.google.common.collect.Lists;

/**
 * 对List进行拆分,用于分布式计算
 * 
 * @author mengfeiyang
 *
 */
public class ListSplit<T> {

	public List<List<T>> split(List<T> sList, int num) {
	    List<List<T>> eList = new ArrayList<List<T>>();
	    List<T> gList;
		int size = (sList.size()) / num;
		int size2 = (sList.size()) % num;
		int j = 0;
		int xx = 0;
		for (int i = 0; i < num; i++) {
			gList = new ArrayList<T>();

			for (j = xx; j < (size + xx); j++) {
				gList.add(sList.get(j));
			}
			xx = j;
			eList.add(gList);
		}
		if (size2 != 0) {
			gList = new ArrayList<T>();
			for (int y = 1; y < size2 + 1; y++) {
				gList.add(sList.get(sList.size() - y));
			}
			eList.add(gList);
		}
		return eList;
	}
	
	public static void main(String[] args) {
		//构造一个待拆分的list
		List<String> ll = Lists.newArrayList("a","b","c","d","e");
		
		ListSplit<String> ls = new ListSplit<String>();
		//把list平均拆分成2个,若不能平均拆分,多出的一个会单独保存到一个list中。
		List<List<String>> li = ls.SplitList(ll, 2);
		for(List<String> l : li){
			System.out.println(Arrays.toString(l.toArray()));//打印出被拆分后的每个list中的值
		}
	}
}

输出:

092041_fC7H_2391658.png

转载于:https://my.oschina.net/u/2391658/blog/703032

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值