/** * 集合转换 * 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)); }
java lambda 表达式 数组 ,List ,Map 转换
最新推荐文章于 2024-01-15 22:30:23 发布