我知道如何将一个简单的Java ListY->Z,即:

List<String> x;
List<Integer> y = x.stream()
        .map(s -> Integer.parseInt(s))
        .collect(Collectors.toList());

现在我想对 map 做基本相同的操作,即:

INPUT:
{
  "key1" -> "41",    // "41" and "42"
  "key2" -> "42"      // are Strings
}

OUTPUT:
{
  "key1" -> 41,      // 41 and 42
  "key2" -> 42       // are Integers
}

解决方案不应限于String-&gt;Integer.就像上面的List示例一样,我想调用任何方法(或构造函数).

推荐答案

Map<String, String> x;
Map<String, Integer> y =
    x.entrySet().stream()
        .collect(Collectors.toMap(
            e -> e.getKey(),
            e -> Integer.parseInt(e.getValue())
        ));

它没有列表代码那么好.您不能在map()呼叫中构造新的Map.Entry,因此工作将混合到collect()呼叫中.

Java相关问答推荐

那么比较似乎不是词典学的,尽管doctor 这么说

Listview—在Android Java中正确链接项目时出错

缩小画布比例后更改滚动窗格的内部大小

Java记录的不同序列化/反序列化

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

Java 21虚拟线程执行器的性能比池化操作系统线程的执行器差?

如何创建同一类的另一个对象,该对象位于变量中?

将关键字与正文中的_Allowed匹配,但带有__Signing可选后缀

使用GridBagLayout正确渲染

Docker不支持弹性APM服务器

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

Groovy/Java:匹配带引号的命令选项

Oj算法 MatrixR032从字符串、归一化和余弦相似度计算创建

为什么在下面的Java泛型方法中没有类型限制?

插入中的JOOQ序列,设置为VS值

我的代码是线程安全的吗?[Java、CAS、转账]

在线程Java中调用Interrupt()之后调用Join()

如何使用Java对随机生成的字母数字优惠券代码进行过期设置

java.lang.NoSuchMethodError:';org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream$Builder org.apache.poi-poi-ooxml-5.2.4

Java方法参数:括号中的类型声明?