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
要么返回一个
列表
,要么返回一个
列表
,每个列表总是包含一个元素?列表可以返回多个值