Java 仅当for each循环不';找不到匹配的?
如果在objectList中找不到匹配项,那么可以使用此代码更改哪些内容,从而运行某些代码Java 仅当for each循环不';找不到匹配的?,java,for-loop,foreach,Java,For Loop,Foreach,如果在objectList中找不到匹配项,那么可以使用此代码更改哪些内容,从而运行某些代码 for (Object o : objectList) { if (o.someValue()).equals(o2.someValue())) { // Do stuff } } 可能是因为现在是凌晨4点,但我觉得这应该是一个简单的问题,我无法理解。只需使用布尔标记来跟踪是否找到匹配项,类似这样的: boolean match = false; for (Object o : o
for (Object o : objectList) {
if (o.someValue()).equals(o2.someValue())) {
// Do stuff
}
}
可能是因为现在是凌晨4点,但我觉得这应该是一个简单的问题,我无法理解。只需使用
布尔标记来跟踪是否找到匹配项,类似这样的:
boolean match = false;
for (Object o : objectList) {
if (o.someValue()).equals(o2.someValue())) {
match true;
break; // no point in iterating further
}
}
if (!match) {
System.out.println("No match was found in the list.");
}
如果您使用的是Java 8,那么您可以在streams中使用一行程序:
boolean match = objectList.stream()
.anyMatch(t -> t.someValue().equals(o2.someValue()));
只需使用布尔
标志跟踪是否找到匹配项,如下所示:
boolean match = false;
for (Object o : objectList) {
if (o.someValue()).equals(o2.someValue())) {
match true;
break; // no point in iterating further
}
}
if (!match) {
System.out.println("No match was found in the list.");
}
如果您使用的是Java 8,那么您可以在streams中使用一行程序:
boolean match = objectList.stream()
.anyMatch(t -> t.someValue().equals(o2.someValue()));
使用简单的布尔标志
使用简单的布尔标志
您可以使用streams支持,例如
Object match = objectList.stream().filter(o -> o.someValue()).equals(o2.someValue())).orElse(null);
if (match == null) {
// No matches...
}
List<String> objectList = new ArrayList<String>(5);
objectList.add("A");
objectList.add("B");
objectList.add("C");
objectList.add("D");
objectList.add("A");
objectList.add("E");
objectList.add("F");
objectList.add("A");
objectList.add("G");
objectList.add("H");
objectList.add("I");
objectList.add("J");
objectList.add("A");
objectList.add("K");
objectList.add("A");
objectList.add("M");
if (objectList.stream().anyMatch(o -> o.equals("A"))) {
objectList.stream().filter(o -> o.equals("A")).forEach(o -> System.out.println(o));
} else {
// No matches
}
起初我想到了类似这样的东西(甚至使用anyMatch),但似乎OP希望为每个匹配做一些事情(//do stuff)
好的,您可以使用anyMatch
来“查看”流中是否有“任何”匹配项,并根据它做出决定,例如
Object match = objectList.stream().filter(o -> o.someValue()).equals(o2.someValue())).orElse(null);
if (match == null) {
// No matches...
}
List<String> objectList = new ArrayList<String>(5);
objectList.add("A");
objectList.add("B");
objectList.add("C");
objectList.add("D");
objectList.add("A");
objectList.add("E");
objectList.add("F");
objectList.add("A");
objectList.add("G");
objectList.add("H");
objectList.add("I");
objectList.add("J");
objectList.add("A");
objectList.add("K");
objectList.add("A");
objectList.add("M");
if (objectList.stream().anyMatch(o -> o.equals("A"))) {
objectList.stream().filter(o -> o.equals("A")).forEach(o -> System.out.println(o));
} else {
// No matches
}
List objectList=newarraylist(5);
对象列表。添加(“A”);
对象列表。添加(“B”);
对象列表。添加(“C”);
对象列表。添加(“D”);
对象列表。添加(“A”);
对象列表。添加(“E”);
对象列表。添加(“F”);
对象列表。添加(“A”);
对象列表。添加(“G”);
对象列表。添加(“H”);
对象列表。添加(“I”);
对象列表。添加(“J”);
对象列表。添加(“A”);
对象列表。添加(“K”);
对象列表。添加(“A”);
对象列表。添加(“M”);
if(objectList.stream().anyMatch(o->o.equals(“A”)){
objectList.stream().filter(o->o.equals(“A”).forEach(o->System.out.println(o));
}否则{
//没有火柴
}
您可以利用streams支持,例如
Object match = objectList.stream().filter(o -> o.someValue()).equals(o2.someValue())).orElse(null);
if (match == null) {
// No matches...
}
List<String> objectList = new ArrayList<String>(5);
objectList.add("A");
objectList.add("B");
objectList.add("C");
objectList.add("D");
objectList.add("A");
objectList.add("E");
objectList.add("F");
objectList.add("A");
objectList.add("G");
objectList.add("H");
objectList.add("I");
objectList.add("J");
objectList.add("A");
objectList.add("K");
objectList.add("A");
objectList.add("M");
if (objectList.stream().anyMatch(o -> o.equals("A"))) {
objectList.stream().filter(o -> o.equals("A")).forEach(o -> System.out.println(o));
} else {
// No matches
}
起初我想到了类似这样的东西(甚至使用anyMatch),但似乎OP希望为每个匹配做一些事情(//do stuff)
好的,您可以使用anyMatch
来“查看”流中是否有“任何”匹配项,并根据它做出决定,例如
Object match = objectList.stream().filter(o -> o.someValue()).equals(o2.someValue())).orElse(null);
if (match == null) {
// No matches...
}
List<String> objectList = new ArrayList<String>(5);
objectList.add("A");
objectList.add("B");
objectList.add("C");
objectList.add("D");
objectList.add("A");
objectList.add("E");
objectList.add("F");
objectList.add("A");
objectList.add("G");
objectList.add("H");
objectList.add("I");
objectList.add("J");
objectList.add("A");
objectList.add("K");
objectList.add("A");
objectList.add("M");
if (objectList.stream().anyMatch(o -> o.equals("A"))) {
objectList.stream().filter(o -> o.equals("A")).forEach(o -> System.out.println(o));
} else {
// No matches
}
List objectList=newarraylist(5);
对象列表。添加(“A”);
对象列表。添加(“B”);
对象列表。添加(“C”);
对象列表。添加(“D”);
对象列表。添加(“A”);
对象列表。添加(“E”);
对象列表。添加(“F”);
对象列表。添加(“A”);
对象列表。添加(“G”);
对象列表。添加(“H”);
对象列表。添加(“I”);
对象列表。添加(“J”);
对象列表。添加(“A”);
对象列表。添加(“K”);
对象列表。添加(“A”);
对象列表。添加(“M”);
if(objectList.stream().anyMatch(o->o.equals(“A”)){
objectList.stream().filter(o->o.equals(“A”).forEach(o->System.out.println(o));
}否则{
//没有火柴
}
有一个布尔标志,它是true
(表示已找到)或false
(表示未找到),并在循环后检查它的开始。您还可以使用streams清除布尔标志,该标志为true
(对于已找到)或false
(对于未找到),并在循环后检查其开始。你也可以使用stream我最初想到过这样的东西(或者甚至使用anyMatch
),但是OP似乎想为每个匹配做点什么(//do stuff
)当然,然后继续在流中迭代最初我想到了类似的东西(或者甚至使用anyMatch
),但是OP似乎想为每一场比赛做点什么(//do stuff
)当然,然后继续浏览这篇文章。谢谢你的快速回复。这篇文章非常有效,我从你的其他建议中学到了一些新东西。谢谢你的快速回复。这篇文章非常有效,我从你的其他建议中学到了一些新东西。