[实践总结] java8 展平嵌套数组

该代码示例展示了如何使用Java8的StreamAPI来递归地展平嵌套的对象数组。方法`java8Flatten`将多维数组转换为单一维度的流,而`deepFlatten`则转换为整数数组。示例中提供了不同类型的输出,包括转换为字符串数组、列表等。
摘要由CSDN通过智能技术生成
/**
 * 展平嵌套数组
 */
public static Stream<Object> java8Flatten(Object[] arr) {
    return Arrays.stream(arr).flatMap(obj -> obj instanceof Object[] ? java8Flatten((Object[]) obj) : Stream.of(obj));
}

public static int[] deepFlatten(Object[] arr) {
    return Arrays.stream(arr).flatMapToInt(obj -> obj instanceof Object[] ? Arrays.stream(deepFlatten((Object[])obj)) : IntStream.of((Integer)obj)).toArray();
}
Object[] arr = {1, 2, new Object[]{1, 2, 44}, 4};

Object[] arr1 = java8Flatten(arr).toArray();                                                // [1, 2, 1, 2, 44, 4]
Object[] arr2 = java8Flatten(arr).map(String::valueOf).toArray();                           // [1, 2, 1, 2, 44, 4]
String[] arr3 = java8Flatten(arr).map(String::valueOf).toArray(String[]::new);              // [1, 2, 1, 2, 44, 4]
List<String> arr4 = java8Flatten(arr).map(String::valueOf).collect(Collectors.toList());    // [1, 2, 1, 2, 44, 4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值