想象一下,我们有两个数组:
String[] arr1 = {"a", "b"}; String[] arr2 = {"1", "2", "3"};
获得包含两者的相乘值的第三个String数组的更好方法是什么.喜欢:
String[] arr3 = {"a1", "a2", "a3", "b1", "b2", "b3"};
我知道,我可以使用循环并将每个元素从1连接起来,每个元素从2连接起来,并将结果放在3中.但实际上在arr1
和中有更多的元素arr2
.Java中是否有一种特殊工具可以提高效率?
如果你可以使用Java 8,这是一个单行:
public static void main(String[] args) { String[] arr1 = {"a", "b"}; String[] arr2 = {"1", "2", "3"}; String[] result = Arrays.stream(arr1).flatMap(s1 -> Arrays.stream(arr2).map(s2 -> s1 + s2)).toArray(String[]::new); System.out.println(Arrays.toString(result)); }
逻辑是第一个数组的每个元素都映射到该元素前置的第二个数组的所有元素的Stream.然后将该流展平并收集到阵列中.
否则,虽然您没有发布您当前拥有的代码,但这听起来是一种很好的方法,并且Java中没有任何神奇的方法可以简化它.