【问题标题】:Merge two one dimensional String arrays to a single array with delimiter将两个一维字符串数组合并为一个带分隔符的数组
【发布时间】:2021-05-12 01:56:33
【问题描述】:

我有两个数组:

a = ["a","b","c"]

b = ["d","e","f"]

如何将它们合并到一个数组中,如下所示:

c = ["a=d", "b=e", "c=f"]

使用等号 (=) 作为合并字符串之间的分隔符?

【问题讨论】:

  • 这个问题正在meta讨论。
  • 重复错误,因为ArrayListarray 不同
  • 技术是一样的,iterate,concat,add。
  • 不。 ArrayList 有内置的 .addAll 方法可以这样做,不需要迭代。
  • addAll 不相关,因为您需要添加自定义分隔符。 Aniway 这个问题不够具体:我们要如何处理数组的大小差异? Not using for loop,我们是否也排除了 while 循环?转到?为什么我们首先要排除类似的 for 循环?此外,所选答案不符合“没有 for 循环”的标准。如果这是一个家庭作业问题,那么课程的主题是什么?流?

标签: java arrays java-stream


【解决方案1】:

你可以在循环的帮助下做到这一点,例如

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] a = { "a", "b", "c" };
        String[] b = { "d", "e", "f" };
        String[] result = new String[a.length];
        for (int i = 0; i < Math.min(a.length, b.length); i++) {
            result[i] = a[i] + "=" + b[i];
        }

        System.out.println(Arrays.toString(result));
    }
}

输出:

[a=d, b=e, c=f]

通过this tutorial from Oracle了解更多关于循环的信息。

使用IntStream

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        String[] a = { "a", "b", "c" };
        String[] b = { "d", "e", "f" };
        String[] result = IntStream
                            .range(0, Math.min(a.length, b.length))
                            .mapToObj(i -> a[i] + "=" + b[i])
                            .toArray(String[]::new);
        
        System.out.println(Arrays.toString(result));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2015-02-05
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多