我有这个方法,它将返回所有枚举值的特定位置中所有值的整数数组。我想知道如何将其转换为流以使其更短、更高效。
所以该方法返回一个包含 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/