为了账号安全,请及时绑定邮箱和手机立即绑定

比较数组之间的所有元素并返回所有可能的匹配项

比较数组之间的所有元素并返回所有可能的匹配项

元芳怎么了 2022-08-03 12:35:42
我正在尝试创建一个函数,该函数将数组的所有元素与第二个数组的所有元素进行比较,并将返回所有可能的匹配项,如果未找到匹配项,则返回消息。当我尝试实现代码时,我得到一个索引越界错误。内部 for 循环可能在外部 for 循环完成运行之前达到最大值。如何修改它以防止发生这种情况?Stocks[] stockList3 = new Stocks[3];stockList3[0] = new Stocks("a", 2, 1, "Buy");stockList3[1] = new Stocks("a", 3, 1, "Buy");stockList3[2] = new Stocks("a", 4, 1, "Buy");Stocks[] stockList4 = new Stocks[3];stockList4[0] = new Stocks("a", 2, 1, "Buy");stockList4[1] = new Stocks("a", 5, 1, "Buy");stockList4[2] = new Stocks("a", 4, 1, "Buy");public void matching(Stocks[] array1, Stocks[] array2) {    for (int i = 0; i < array1.length; i++) {        for (int j = 0; i < array2.length; j++) {            if (array1[i].stockPrice == array2[j].stockPrice) {                System.out.println("It's a match at $" + array1[i].stockPrice);            }            System.out.println("still searching...");        }        System.out.println("first loop test...");    }}
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

如何代替两个,使用集合来存储数组之一的存在?for loopsSetstockPrices


public static List<Stocks> matching(Stocks[] one, Stocks[] two) {

    Set<Integer> stockPrices = Arrays.stream(one)

                                     .map(stock -> stock.stockPrice)

                                     .collect(Collectors.toSet());

    return Arrays.stream(two)

                 .filter(stock -> stockPrices.contains(stock.stockPrice))

                 .collect(Collectors.toList());

}

它使用 O(n) 附加内存(其中 n 为 1.length)和 O(n + m) 性能时间(其中 m 为 2.length)。


查看完整回答
反对 回复 2022-08-03
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

在你的j循环中,你说的不是i<array2.lengthj<array2.length


public void matching ( Stocks[] array1, Stocks[] array2){

    for (int i=0; i<array1.length;i++){


        for (int j=0;

                 j<array2.length;  //this j was an i

                 j++){


            if (array1[i].stockPrice == array2[j].stockPrice){

                System.out.println("It's a match at $" + array1[i].stockPrice);




            }

            System.out.println("still searching...");

        }

        System.out.println("first loop test...");   

    }


}


查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号