public class DataSplit {
public static <T> Map<Integer,List<T>> split(Integer subNum, List<T> dataSource){
Map<Integer,List<T>> rst = new HashMap<Integer, List<T>>(subNum);
for (int i = 0; i < subNum; i++) {
List<T> subLst = new ArrayList<T>();
rst.put(i, subLst);
}
for (int i = 0; i < dataSource.size(); i++) {
T t = dataSource.get(i);
int hashcode = t.hashCode();
if (hashcode<0) {
hashcode = - hashcode;
}
int mark = hashcode%subNum;
List<T> subLst = rst.get(mark);
subLst.add(t);
rst.remove(mark);
rst.put(mark, subLst);
}
return rst;
}
}
如果数据是数组,可以用程序转换一下使用,分情况吧。
数组与list转化工具地址:http://blog.csdn.net/haojianxiang/article/details/50907472
本文介绍了一个通用的数据拆分算法,该算法能够将输入的数据源(如列表)均匀地分配到多个子列表中。通过计算每个元素的哈希值并取模来决定其归属,确保了数据分布的均衡性。

被折叠的 条评论
为什么被折叠?



