亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在java中找到第一個匹配元素時迭代2arraylist并退出

如何在java中找到第一個匹配元素時迭代2arraylist并退出

互換的青春 2023-02-23 14:37:58
我有 2 個數組列表,兩者都有一些共同的值。我試過 for 循環,做 while 循環,但對我沒有任何作用我想要第一個匹配/公共元素并返回相同的元素并在那里退出代碼本身boolean good = true; for (int i = 0; i <1Val.size(); i ++) {    if (!(2Val.contains(1Val.get(i)))) {       System.out.println("Matched---" +quoteVal.get(i));       good = false; break;    } } 
查看完整描述

4 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

您可以只使用 Java Streams 來解決這個問題:

boolean good = val1.stream().anyMatch(val2::contains);

如果你需要第一個匹配的值,你可以使用這個:

Optional<String> firstMatch = val1.stream()
        .filter(val2::contains)
        .findFirst();

用于Optional.isPresent()檢查是否找到匹配項并Optional.get()獲取實際值。

要提高大型列表的性能,請使用集合 for val2。的時間復雜度為O (1)Set.contains()。


查看完整回答
反對 回復 2023-02-23
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

也許您想使用流


    List<String> list1 = Arrays.asList("a","b","c","d","e");

    List<String> list2 =  Arrays.asList("b","e");


    //gets the list of common elments

    List<String> common = list1.stream().filter(s -> list2.contains(s)).collect(Collectors.toList());

    if (common.isEmpty()) {

        System.out.println("no common elements");

    }else {

        System.out.println("common elements");

        common.forEach(System.out::println);

    }



    //just the check if any equal elements exist

    boolean commonElementsExist = list1.stream().anyMatch(s -> list2.contains(s));



    //3rd version get the first common element

    Optional<String> firstCommonElement = list1.stream().filter(s -> list2.contains(s)).findFirst();


    if(firstCommonElement.isPresent()) {

        System.out.println("the first common element is "+firstCommonElement.get());

    }else {

        System.out.println("no common elements");

    }


查看完整回答
反對 回復 2023-02-23
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

如果其中一個數組列表小于您應該在 for 循環中使用該特定列表的大小。


for(int i = 0; i < 1Val.size(); i++){


      if(2val.contains(1Val.get(i))){

         return true; // common value found

      }


}

return false; // common value not found


查看完整回答
反對 回復 2023-02-23
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

試試這個代碼


for (int i=0;i<arrayList2.size();i++) {


for (int j=0;j<arrayList1.size(); j++) {



if(al2.get(i)equals(al1.get(j))){

// do something// you can add them to the new arraylist to process further or type break; to break from the loop

{

}


查看完整回答
反對 回復 2023-02-23
  • 4 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號