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

如何在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 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信