第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

比較數(shù)組之間的所有元素并返回所有可能的匹配項(xiàng)

比較數(shù)組之間的所有元素并返回所有可能的匹配項(xiàng)

慕妹3146593 2022-07-27 16:43:31
我正在嘗試創(chuàng)建一個(gè)函數(shù),將數(shù)組的所有元素與第二個(gè)數(shù)組的所有元素進(jìn)行比較,并將返回所有可能的匹配項(xiàng),如果未找到匹配項(xiàng)則返回消息。當(dāng)我嘗試實(shí)現(xiàn)代碼時(shí),我得到一個(gè)索引超出范圍的錯(cuò)誤。在外部 for 循環(huán)完成運(yùn)行之前,內(nèi)部 for 循環(huán)可能已達(dá)到極限。如何修改它以防止發(fā)生這種情況?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貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

for loops使用Setcollection 來存儲(chǔ)stockPrices數(shù)組中的一個(gè)而不是 two 怎么樣?


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èi)存(其中n是one.length)和O(n + m)性能時(shí)間(其中m是two.length)。


查看完整回答
反對(duì) 回復(fù) 2022-07-27
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

在您的 j-loop 中,您說i<array2.length的是j<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...");   

    }


}


查看完整回答
反對(duì) 回復(fù) 2022-07-27
  • 2 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)