当前位置: 首页 > 知识库问答 >
问题:

将两个数组相乘,并将结果放入第三个java中

商泽宇
2023-03-14

想象我们有两个数组:

String[] arr1 = {"a", "b"};
String[] arr2 = {"1", "2", "3"};

获取包含两者相乘值的第三个String数组的更好方法是什么?比如:

String[] arr3 = {"a1", "a2", "a3", "b1", "b2", "b3"};

我知道,我可以使用循环并将1中的每个元素与2中的每个元素连接起来,并将结果放入3中。但实际上arr1arr2中的元素要多得多。Java中是否有专门的工具使其更有效?

共有3个答案

宋运锋
2023-03-14

如果你的意思是渐近复杂性意义上的“有效”,那么没有比嵌套循环更有效的方法了。不管怎样,您都需要生成并记录对arr1.length*arr2.length字符串的引用,在最好的情况下,这需要与元素数量成比例的工作;也就是说,它是o(arr1.length*arr2.length)嵌套循环方法已经显示出最佳情况的复杂性。

但是,您也可以使用Java 8流解决问题,它可以更紧凑地表达,并且(对某些人来说)更清晰。这也为并行化操作提供了一个入口,所以虽然它不会降低渐近的复杂性(并且它可能具有更高的总体成本),但如果你的意思是“高效”,即更少的墙壁时间,那么流可能是你正在寻找的。另一个答案已经提供了详细信息。

欧桐
2023-03-14
    int z = 0;
    String[] suit_arr = {"C", "D", "H", "S"};
    String[] rank_arr = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
    String[] pack = new String[52];
    for (int i = 0; i < suit_arr.length; i++) {
        for (int j = 0; j < rank_arr.length; j++) {
            pack[z] = suit_arr[i] + rank_arr[j];
            z++;
        }

    }
    for (int y = 0; y < pack.length; y++) {
        System.out.println(pack[y]);
    }

}

这是用来装卡片的。所以这不仅仅是连接,就像我必须得到数组中每个元素之间所有可能的混合。顺便问一下,为什么我的问题是负的?是愚蠢的问题还是什么?

李法
2023-03-14

如果您可以使用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));
}

逻辑是,第一个数组的每个元素都映射到第二个数组的所有元素的流,该流由该元素前缀。然后将此流展平并收集到一个数组中。

否则,尽管您没有发布当前拥有的代码,但这听起来是一种很好的方法,而且Java中没有任何神奇的方法可以更简单地实现。

 类似资料:
  • 我解决了一个编程问题,如果有两个数字A和B,我必须在乘积的二进制形式中找到1的个数。A和B的范围是[0,10^9]包括在内。这是我写的代码。 这对输入(3,4)很有效,但当我尝试(323294746475)作为输入时,代码不起作用,结果显示0作为答案。我在不同的地方放了几个输出语句进行调试,发现有了这个输入,乘法的结果是-1170032381(这是错误的),因此while循环的条件失败。所以,我像

  • 有人请解释一下。为什么下面的程序产生16个?

  • 我有一个PySpark数据帧,df1,看起来像: 我有第二个PySpark数据帧,df2 我想将df1的所有列(我有两列以上)与客户ID上的df2连接值相乘

  • 问题内容: 我有一张桌子 提供值后,需要计算为 我想乘和列并将结果存储在同一表的列中。 我已经试过了: 但是失败了! 有人请帮助我实现这一目标。 问题答案: 尝试更新表格

  • 该方法通过用户的输入获取给定数据集中的两个最大整数,并计算它们的乘积。它对每个输入都很有效,直到我尝试了两个整数和的数组,它返回。 这是我的Java方法: 这是我的方法:

  • 我正在尝试将数组的每个“列”乘以一个特定的数字,然后对每个“行”的结果求和。 我能够找出如何在单个阵列中执行此操作,但在2d阵列中却很难找到。 我需要递归地做这件事,所以没有循环。有人能提供一个伪代码,或者解释我应该为每列采取什么步骤吗? 如何将此代码转换为2d数组版本?