Java8 - 如何操作和分配变量?

时间:2015-06-30 08:36:43

标签: java java-8

我有一个Map<Enum, Object> myMap,我正在尝试使用Java8 Optional来简化这种情况。如果有可能,你怎么做?我的目标是分配newVar

Enum2 newVar = Z;
if(myMap.containsKey(A))
  newVar = X;
if(myMap.containsKey(B))
  newVar = Y;

2 个答案:

答案 0 :(得分:3)

我想你有很多这样的分支(否则你的代码很简单,不需要修改)。在这种情况下,最好创建预定义的地图Map<Enum,Enum2>

// initialized once statically
Map<Enum,Enum2> enum2map = new LinkedHashMap<>();
enum2map.put(A, X);
enum2map.put(B, Y);
...

然后您可以按以下方式使用它(根据需要使用Optional):

Enum2 newVar = enum2map.entrySet().stream()
                       .filter(e -> myMap.containsKey(e.getKey()))
                       .findFirst()
                       .map(e -> e.getValue()).orElse(Z);

答案 1 :(得分:1)

您可以使用条件运算符。

newVar = myMap.contains(B) ? Y : myMap.contains(A) ? X : Z;

有关详细信息,请查看Equality, Relational, and Conditional Operators中的官方信息。

希望有所帮助!