You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java8 Stream API按字符交替拼接两个字符串?

使用Java 8 Stream API实现字符串交替拼接

要实现两个字符串交替取字符、剩余字符追加的需求,可以通过合并两个Stream来完成,具体实现如下:

核心代码

import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class AlternateStringJoin {
    public static void main(String[] args) {
        String s1 = "Mohan";
        String s2 = "1234567";
        
        int minLen = Math.min(s1.length(), s2.length());
        int maxLen = Math.max(s1.length(), s2.length());
        
        String result = Stream.concat(
                // 处理交替拼接部分:遍历到较短字符串的长度,每个索引取出两个字符展开
                IntStream.range(0, minLen)
                        .boxed()
                        .flatMap(i -> Stream.of(s1.charAt(i), s2.charAt(i))),
                // 处理剩余字符部分:遍历剩余索引,取出较长字符串的剩余字符
                IntStream.range(minLen, maxLen)
                        .mapToObj(i -> i < s1.length() ? s1.charAt(i) : s2.charAt(i))
        )
        .map(String::valueOf)
        .collect(Collectors.joining());
        
        System.out.println("\"" + result + "\""); // 输出:"M1o2h3a4n567"
    }
}

代码说明

  1. 确定长度边界:先计算两个字符串的最短长度minLen(控制交替拼接的范围)和最长长度maxLen(控制剩余字符的范围)。
  2. 生成交替字符流:通过IntStream.range(0, minLen)生成索引流,每个索引对应取出s1和s2的字符,再用flatMap将每个索引对应的两个字符展开为连续的流元素,实现交替顺序。
  3. 生成剩余字符流:生成从minLen到maxLen-1的索引流,判断当前索引属于哪个未用完的字符串,取出对应的剩余字符。
  4. 合并与收集结果:用Stream.concat合并两个流,将每个字符转为字符串后,通过Collectors.joining()拼接成最终结果。

性能优化版本(减少装箱开销)

如果追求更高执行效率,可以直接操作字符的int值,避免自动装箱:

String result = Stream.concat(
        IntStream.range(0, minLen)
                .flatMap(i -> IntStream.of(s1.charAt(i), s2.charAt(i)))
                .mapToObj(c -> String.valueOf((char) c)),
        IntStream.range(minLen, maxLen)
                .map(i -> i < s1.length() ? s1.charAt(i) : s2.charAt(i))
                .mapToObj(c -> String.valueOf((char) c))
)
.collect(Collectors.joining());

内容的提问来源于stack exchange,提问作者Bijaya Bhaskar Swain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:22:37