Java 按筛选器查找项目或获取任何
我有一个对象集合,我需要找到一个特定的对象,如果找不到,则返回任何对象或第一个对象 例如:Java 按筛选器查找项目或获取任何,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个对象集合,我需要找到一个特定的对象,如果找不到,则返回任何对象或第一个对象 例如: @Getter @Setter public class Foo { Long id; FooType type; } 我想这样做: Foo foo = setOfFoos.stream() .filter(f -> f.getType() == TYPE_A) // not found my type, return any .orElseF
@Getter
@Setter
public class Foo {
Long id;
FooType type;
}
我想这样做:
Foo foo = setOfFoos.stream()
.filter(f -> f.getType() == TYPE_A)
// not found my type, return any
.orElseFirst();
你能给我提供一些来自Java8的漂亮的解决方案吗?谢谢。您可以这样做,如果有匹配的,返回第一个匹配的,否则选择随机的
foo.stream()
.filter(f -> f.getType() == TYPE_A)
.findFirst()
.orElse(foo.get(ThreadLocalRandom.current().nextInt(foo.size())));
或者,如果不满足其中任何一个条件,也可以获得第一个元素
foo.stream()
.filter(f -> f.getType() == TYPE_A)
.findFirst()
.orElse(foo.get(0));
你可以这样做,如果你有任何匹配的,返回第一个匹配的,否则选择随机的
foo.stream()
.filter(f -> f.getType() == TYPE_A)
.findFirst()
.orElse(foo.get(ThreadLocalRandom.current().nextInt(foo.size())));
或者,如果不满足其中任何一个条件,也可以获得第一个元素
foo.stream()
.filter(f -> f.getType() == TYPE_A)
.findFirst()
.orElse(foo.get(0));
如果未找到,请返回任何或第一个。-没有太多的意义,IMHO,任何可以包括第一以及。如果没有找到返回任何或第一。-没什么意义,任何人也可以先包括在内。你认真对待“任何人”…只要
get(0)
就足够了。你认真对待“任何人”…只要get(0)
就足够了。