假设我们有以下方法。
void some(int id, int... otherIds) {
}
如何使用这两个参数创建单个IntStream?
IntStream.concat(
IntStream.of(id),
Optional.ofNullable(otherIds)
.map(IntStream::of)
.orElseGet(IntStream::empty)
);
它似乎很冗长。我们有什么简明的成语吗?
亚历山大·伊万琴科已经提到了三个选择。
还有一个:
Objects.requireNonNull(otherIds);
Stream.of(new int[] { id }, otherIds)
.flatMapToInt(Arrays::stream)
我认为其他Ids
不应该是null
,应该被视为程序员错误。使用对象::要求NonNull
它会快速失败。
当需要处理可为null的流源时,可以使用流。ofNullable()可通过Java 9访问,它生成单例流或空流。它将比使用可选的更干净。ofNullable(),用于在其上链接方法。
IntStream.concat(IntStream.of(id),
Stream.ofNullable(otherIds).flatMapToInt(IntStream::of))
另一种选择是使用Java9静态方法Objects.requireNonNullElse()
,它需要一个可空参数和一个默认值:
IntStream.concat(IntStream.of(id),
IntStream.of(Objects.requireNonNullElse(otherIds, new int[0])))
最简单和最干净的解决方案将是一个快速失败的实现,它将抛出一个NullPointerException
以防数组其他Ids
为null
。
IntStream.concat(IntStream.of(id), Arrays.stream(otherIds))
它的零安全味道(归功于@Holger):
IntStream.concat(IntStream.of(id),
otherIds != null ? Arrays.stream(otherIds) : IntStream.empty())
问题内容: 考虑方法声明: 该Object …参数只是对Objects 数组的引用。有没有办法在引用实际Object数组时使用此方法?如果我将Object数组传递给…参数-结果参数值将是一个二维数组-因为an Object[]本身就是an Object: 因此,数组的第一个组件(String.format方法中使用了哪个)将是一个数组,他将生成: 然后由于数组大小为1而发生错误。 该大胆的顺序是真
我是JAVA新手,我想我已经搜索了所有的问题,没有找到一个与我的问题相似的。 我想使用Math.random()生成随机数,以返回4个固定数。我想要得到的数字是:0、90、180和270。换句话说,我想要4个最小值为0、最大值为270、增量为90的数字。
我使用Spring数据JPA(目前是1.11.3.RELEASE)和Hibernate(目前是5.2.10.Final)作为JPA实现 我将以下场景作为(简化的)示例,首先是一个简单的用户实体类: 使用基于CRUD的用户存储库。此用户存储库应提供停用由其id标识的用户的方法: Spring Data JPA文档以@Query的修改形式对该解决方案进行了详细描述。 我在文档中遗漏的是如何提供ID列表
问题内容: 我使用jOOQ 3.11.11生成了这样的SQL模板。 SQL模板: 将存储SQL模板,并根据实时查询条件确定参数。 实时SQL: order by子句有问题。 所以。如何用 “ id desc” 或 “ name asc” 用param 排序 替换订单并消除引号? 问题答案: 创建一个绑定变量,该绑定变量的生成方式与SQL一样,或者您选择使用命名参数,或者选择内联绑定变量。有关绑定变
我想做的是:使用Android的MediaCodec将原始PCM音频样本编码到原始AAC文件中。 我的问题是:当我使用FFMPEG将生成的原始AAC文件打包到M4A容器中时,FFMPEG抱怨文件中缺少编解码器参数。 细节: 因为我找不到任何用于生成输出AAC文件的音频编码器的MediaCodec示例代码,所以我尝试将视频编码器修改为音频编码器。原始代码如下:源代码 我对音频编码器的配置如下: 然后