将Lambda表达式简化为一行

时间:2019-05-11 15:56:21

标签: java lambda java-8

我是Java 8的新手,需要帮助来分析使用lambda的BiFunction实现是否可以简化为一行代码。

我正在从REST API接收字符串形式的JSON响应,我想使用Gson存储在Hashmap中,然后我的函数应该返回给定键的值。

Map<String,String> map = new HashMap<>();
BiFunction<String,String,String> getValueFromResponseWithKey = (s1,s2)-> {
            Map<String,String> str =gson.fromJson(response,map.getClass());
            return str.get(s2);};
System.out.println(getValueFromResponseWithKey.apply(response,"accountNumber"));

如果能找到getValueFromResponseWithKey函数的单行实现,那就太好了。

1 个答案:

答案 0 :(得分:2)

应该如下所示。您可能需要添加简单的转换,例如

BiFunction<String,String,String> getValueFromResponseWithKey = 
        (s1,s2) -> ((Map<String, String>) gson.fromJson(response,map.getClass())).get(s2);