java - 如何将其转换为使用 java 流?

标签 java

我有这个方法,它将返回所有枚举值的特定位置中所有值的整数数组。我想知道如何将其转换为流以使其更短、更高效。

所以该方法返回一个包含 12、16、19、15 的整数数组,但我想知道如何使用流缩短它。

谢谢!

ITEM_1(12),
ITEM_3(16),
ITEM_4(19),
ITEM_5(15);

private final int ITEM_ID;

ENUM_NAME(int item_id) {
    this.ITEM_ID = item_id;
}

public int[] getIDs() {
    final ENUM_NAME[] enum_name = ENUM_NAME.values();
    final int[] item_ids = new int[enum_name.length];

    for (int i = 0; i < enum_name.length; i++) {
        item_ids[i] = enum_name[i].getItemID();
    }

    return item_ids;
}

最佳答案

你可以用这样的方法来缩短值的循环:

Arrays.stream(ENUM_NAME.values()).map(t -> t.ITEM_ID)

它将创建具有 ITEM_ID 值的 Stream(值将是 Integer 类型)

要像代码中的 getIDs() 方法一样返回 int 数组 (int[]),请使用:

Arrays.stream(ENUM_NAME.values()).mapToInt(t -> t.ITEM_ID).toArray()

关于java - 如何将其转换为使用 java 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985819/

相关文章:

java - 如何在二叉树中搜索一个节点并返回它?

java - ContextLoaderListener 的问题

java - 为什么 new File() 期望文件位于 Java Web 应用程序的 TOMCAT_HOME/bin 中?

java - 当我删除对它的所有引用时,阻塞在 accept() 中的 ServerSocket 实例会发生什么情况?

Java设计模式

java - Jaxb + Jersey 。跳过生成的 json 中的空字段

java - 将其添加到 JFrame 时,所有组件实例是否都需要是静态的

java - 哪个应用程序在前台?

java - Hibernate 一对多 HashMap 不更新 child

向服务器发送请求时出现 javax.net.ssl.SSLHandshakeException : java. security.cert.CertPathValidatorException