java lambda 表达式 数组 ,List ,Map 转换

/**
 * 集合转换
 * eg:
 * List<String> base = new ArrayList<>();
 * base.add("11;12;33");
 * base.add("21;22;33");
 * base.add("31;22;33");
 * var list = convertList(base, e -> new Integer[]{Integer.valueOf(e.split("[;]")[0]), Integer.valueOf(e.split("[;]")[1]), Integer.valueOf(e.split("[;]")[2])});
 * for (var l : list) {
 * System.err.println(l[0] + "=" + l[1] + "=" + l[2]);
 * }
 * println:::
 * 11=12=33
 * 21=22=33
 * 31=22=33
 */
public static <T, U> List<U> convertList(List<T> from, Function<T, U> func) {
    if (Objects.isNull(from)) {
        return null;
    }
    return from.stream().map(func).collect(Collectors.toList());
}

/**
 * 数组转换
 * eg:
 * String value = "1;2;3";
 * var list = convertArray(value.split("[;]"), Integer::valueOf, Integer[]::new);
 * for (var l : list) {
 * System.err.println(l);
 * }
 * println:::
 * 1
 * 2
 * 3
 */
public static <T, U> U[] convertArray(T[] from, Function<T, U> func, IntFunction<U[]> generator) {
    if (Objects.isNull(from)) {
        return null;
    }
    return Arrays.stream(from).map(func).toArray(generator);
}

/**
 * 数组转换
 * eg:
 * List<Integer[]> base = new ArrayList<>();
 * for (int i = 0; i < 3; i++) {
 * base.add(new Integer[]{i * 100, i * 100 + 1, i * 100 + 2});
 * }
 * var list = list2Array(base, e -> e[0], Integer[]::new);
 * for (var l : list) {
 * System.err.println(l);
 * }
 * println:::
 * 0
 * 100
 * 200
 */
public static <T, U> U[] list2Array(List<T> from, Function<T, U> func, IntFunction<U[]> generator) {
    if (Objects.isNull(from)) {
        return null;
    }
    return from.stream().map(func).toArray(generator);
}

/**
 * map 转 集合
 * eg:
 * HashMap<Long, Long> tmp = new HashMap<>();
 * tmp.put(1l, 1l);
 * tmp.put(2l, 1l);
 * tmp.put(3l, 1l);
 * var list = convertList(tmp, e -> new Long[]{e.getKey(), e.getValue()});
 * for (var l : list) {
 * System.err.println(l[0] + "=" + l[1]);
 * }
 * println:::
 * 1=1
 * 2=1
 * 3=1
 */
public static <K, V, U> List<U> convertList(Map<K, V> from, Function<Map.Entry<K, V>, U> func) {
    if (Objects.isNull(from)) {
        return null;
    }
    return from.entrySet().stream().map(func).collect(Collectors.toList());
}

/**
 * 数组转 map
 * eg:
 * List<Long[]> base = new ArrayList<>();
 * base.add(new Long[]{1l, 1l});
 * base.add(new Long[]{2l, 2l});
 * base.add(new Long[]{3l, 3l});
 * var map = convertMap(base, e -> e[0], e -> e[1]);
 * var ite = map.entrySet().iterator();
 * while (ite.hasNext()) {
 * var e = ite.next();
 * System.err.println(e.getKey() + "=" + e.getValue());
 * }
 * println:::
 * 1=1
 * 2=2
 * 3=3
 */
public static <K, V, T> Map<K, V> convertMap(List<T> from, Function<T, K> funcKey, Function<T, V> funcVal) {
    if (Objects.isNull(from)) {
        return null;
    }
    return from.stream().collect(Collectors.toMap(funcKey, funcVal));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值