在Java中,经常会有一些重复性的子业务,比如对字符串的处理,对流的处理以及对集合的排序操作,这里总结以下的几类业务场景,在使用的时候可以举一反三,增加业务需求处理效率
list转字符串数组
普通处理方式
String collect = strings.stream().collect(Collectors.joining(","));
Java8处理方式 对象类型
String collect = objects.stream().map(User::getName).collect(Collectors.joining(","));
基本数据类型
String collect = strings.stream().collect(Collectors.joining(","));
Java8大数据量List元素分批切割
业务场景
在Java中会经常进行分批操作,针对一个list数组进行分批,子操作就是将元素进行分批
使用guava
List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8,9,10);
List<List<Integer>> parts = Lists.partition(intList, 3);
手写实现
public static <T> List<List<T>> averageAssign(List<T> source, int n) {
List<List<T>> result = new ArrayList<>();
//(先计算出余数)
int remainder = source.size() % n;
//然后是商
int number = source.size() / n;
//偏移量
int offset = 0;
for (int i = 0; i < n; i++) {
List<T> value;
if (remainder > 0) {
value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
remainder--;
offset++;
} else {
value = source.subList(i * number + offset, (i + 1) * number + offset);
}
result.add(value);
}
return result;
}