我有一个元素流,只想从流中获取一个元素,如果流中有多个元素并且根本没有元素,则抛出异常.可以用Stream制作吗?

public Entity getEntityByValue(String value) {
        return entityService.getEntitiesByValue(value)
                .stream
                // check here count of entities and throw a MultiMatchException if more than one entity is present
                .findAny()
                .orElseThrow(() -> throw NoEntitiesFoundException()); //no entities found
    }

我想过使用.duce(a,b->抛出多匹配异常),并在第二个元素存在但不能将其与其他代码组合时抛出异常

推荐答案

你已经很接近了:

stream.reduce((i1, i2) -> { throw new RuntimeException(); })
      .orElseThrow(() -> new RuntimeException());

Java相关问答推荐

将具有多个未知字段的SON映射到Java POJO

当我用OkHttpClient重写shouldInterceptRequest来发布数据时,Android WebView正在以纯HTML加载URL内容

RxJava PublishSubject缓冲区元素超时

如何修复IndexOutOfBoundsException在ClerView适配器的onRowMoved函数?

Jakarta CDI强制bean构造/注册遗留事件侦听器

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

测试容器无法加载类路径初始化脚本

在JDK 1.8源代码中,为什么使用A-B 0来确定哪个更大,而不是A B?

匹配一组字符或另一组字符

如何在JavaFX中处理多个按钮

如何将Java文档配置为在指定的项目根目录中生成?

如何在JUNIT测试中覆盖ExecutorService?

将ByteBuffer异步写入InputStream或Channel或类似对象

A.ForEach与For(类型a:集合)

将stringBuilder + forloop转换为stream + map

如何使这两种方法合二为一?

Java Flux中的延迟增加

如何通过用户ID向用户发送私信

如何判断元素计数并在流的中间抛出异常?

如何使用我的RLE程序解决此问题