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

标签 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;

最佳答案

我想你有很多这样的分支(否则你的代码就足够简单了,不需要改变)。在这种情况下,最好创建一个预定义 map 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);

关于Java8 - 如何操作和分配变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133412/

相关文章:

java - 如何将用户字符串输出存储到 String[] 数组中

java - 如何使用 itext 增加 PDF 表格某些部分而不是整个表格的单元格空间?

java - 可空元素的二维非空数组

java - JMS - 从消息驱动 bean 同步发送消息

java - 如何在android中彼此相邻添加图像

java - JBoss - 同一应用程序中的不同类加载系统 - 可能吗?

Java 8 List<V> 到 Map<K, V>

java - Stream使用过程中出现异常如何捕获和修改数据

java - 使用方法引用而不是多参数 lambda

java - 如何使用 java lambda 流 :Given a list of students having books, 查找所有正在阅读最便宜书籍的学生