我有这个方法将返回所有枚举值的特定位置中所有值的整数数组。我想知道如何将其转换为流,以使其更短,更有效。
因此该方法返回一个包含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;
}
答案 0 :(得分:3)
您可以使用以下内容缩短值的循环:
Arrays.stream(ENUM_NAME.values()).map(t -> t.ITEM_ID)
它将使用ITEM_ID值创建Stream(值将为Integer类型)
要返回int数组(int []),如代码中的getIDs()方法,请使用:
Arrays.stream(ENUM_NAME.values()).mapToInt(t -> t.ITEM_ID).toArray()