Java 8 Java8-if-else替换
我有两个变量作为列表存储在地图中Java 8 Java8-if-else替换,java-8,Java 8,我有两个变量作为列表存储在地图中 int value; int[] values; 在这里,int也将存储为数组。asList(value) 当我们获取attributemap.get(“value”)-->时,它将作为列表返回 因此,我使用以下代码来检索该值 要获得价值-> (Integer)attributesMap.get("value").stream().findFirst().get(); 要获取值-> (int[])attributesMap.get("values").str
int value;
int[] values;
在这里,int也将存储为数组。asList(value)
当我们获取attributemap.get(“value”)
-->时,它将作为列表返回
因此,我使用以下代码来检索该值
要获得价值->
(Integer)attributesMap.get("value").stream().findFirst().get();
要获取值->
(int[])attributesMap.get("values").stream().findFirst().get();
实际上,其中只有一个具有实际值
没有实际值的字段将保留默认值0,但这不是实际值
例如
int value = 0;
int[] values = {1,2};
在这里,可以忽略值->保留实际值和“值”
int value = 1;
int[] values = {0};
在这里,值->保留实际值和“值”可以忽略
int value = 1;
int[] values = {0};
因此,我需要从上述两个字段中得到最后一个int[]数组
我用的逻辑,
int[] values = null;
if (attributesMap.get("value").stream().filter(value -> ((Integer)value > 0)).count() > 0) {
values = new int[1];
values[0] = (Integer)attributesMap.get("value").stream().filter(value -> ((Integer)value > 0)).findFirst().get();
}
else if (values == null) {
values = Arrays.stream((int[])attributesMap.get("values").stream().findFirst().get()).filter(value -> value>0).toArray();
}
另一种方式,
int[] values = attributesMap.get("value").stream().filter(value -> ((Integer)value > 0)).count() > 0
? attributesMap.get("value").stream().mapToInt(val -> (int)val).toArray()
: (int[])attributesMap.get("values").stream().findFirst().get();
在不使用if&else的情况下使用java8有没有更好的方法
谢谢
int value = (int) attributesMap.get("value").get(0);
int[] values = value > 0 ? new int[] { value } : (int[]) attributesMap.get("values").get(0);
对于这个问题,流是多余的,已经有了一种方法来获取列表中的第一个值。需要澄清的是,
attributemap.get
要么返回一个列表
,要么返回一个列表
,每个列表总是包含一个元素?列表可以返回多个值