在java中找到第一个匹配元素时,如何迭代2arraylist并退出
我有两个数组列表,其中都有一些公共值 我试着做循环,做循环,但什么都不适合我 我想要第一个匹配/公共元素,并返回相同的元素,然后在那里退出代码本身在java中找到第一个匹配元素时,如何迭代2arraylist并退出,java,arraylist,Java,Arraylist,我有两个数组列表,其中都有一些公共值 我试着做循环,做循环,但什么都不适合我 我想要第一个匹配/公共元素,并返回相同的元素,然后在那里退出代码本身 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
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;
}
}
boolean good=true;
for(int i=0;i如果其中一个数组列表小于,则应在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
for(int i=0;i<1Val.size();i++){
如果(2val.contains(1Val.get(i))){
返回true;//找到公共值
}
}
返回false;//找不到公共值
试试这段代码
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
{
}
}
for(inti=0;i也许您希望使用流
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");
}
list1=Arrays.asList(“a”、“b”、“c”、“d”、“e”);
list2=Arrays.asList(“b”、“e”);
//获取常用元素的列表
List common=list1.stream().filter->list2.contains().collect(Collectors.toList());
if(common.isEmpty()){
System.out.println(“无公共元素”);
}否则{
System.out.println(“公共元素”);
common.forEach(System.out::println);
}
//只是检查是否存在任何相等的元素
布尔commonElementsExist=list1.stream().anyMatch->list2.contains;
//第三个版本获得第一个公共元素
可选的firstCommonElement=list1.stream().filter->list2.contains().findFirst();
if(firstCommonElement.isPresent()){
System.out.println(“第一个公共元素是”+firstCommonElement.get());
}否则{
System.out.println(“无公共元素”);
}
您可以为此使用标记的语句
outer_loop:
for (int i=0;i<arrayList2.size();i++) {
for (int j=0;j<arrayList1.size(); j++) {
if(arrayList2.get(i)==arrayList1.get(j)){
break outer_loop;
}
}
}
外环:
对于(int i=0;i,您可以使用Java Streams来解决这个问题:
boolean good = val1.stream().anyMatch(val2::contains);
如果需要第一个匹配项的值,可以使用:
Optional<String> firstMatch = val1.stream()
.filter(val2::contains)
.findFirst();
可选的firstMatch=val1.stream()
.filter(val2::contains)
.findFirst();
使用Optional.isPresent()
检查是否找到匹配项,使用Optional.get()
获取实际值
若要提高大型列表的性能,请为val2
使用一个集合。由于我无法发布我在主描述中尝试的代码,因此set.contains()
的时间复杂度为O(1)。在此处发布boolean good=true;对于(int i=0;i什么不起作用?请提问并在那里添加代码。在此代码中,将打印不匹配的第一个元素。如果需要第一个元素,请从检查中删除!
。@用return 1Val.get(i)替换中断符…但是你的代码无法编译,变量名不允许以数字开头如果你使用==它不起作用,你必须使用等于。顺便说一句,使用标签来实现这一目的非常…很难说你必须使用等于而不是==是的,对不起,你是对的我忘了我使用的是arrayList而不是arrays