将字符串阵列解析到Eclipse集合中的地图中的更好方法



是否有更好的方法将'='划界的一系列字符串分析到地图中。

MutableMap<String, String> config = new UnifiedMap<>();
      ArrayIterate.collectWith(data.split(","), String::split, "=")
                  .each(v -> config.put(v[0], v[1]));

我不确定以下内容是否与您的输入相匹配,但是我认为它可能会根据您的两个拆分呼叫而在结构上相似。您可以使用toMap稍微简化代码,而不是构造UnifiedMap和使用each

此解决方案使用ArrayIterate,如上所述:

String data = "1=one,2=two,3=three";
MutableMap<String, String> config =
        ArrayIterate.collectWith(data.split(","), String::split, "=")
                .toMap(a -> a[0], a -> a[1]);

此解决方案使用ArrayAdapter,这可能会使代码更易于阅读,具体取决于您的标准。

MutableMap<String, String> config = ArrayAdapter.adapt(data.split(","))
        .collectWith(String::split, "=")
        .toMap(a -> a[0], a -> a[1]);

使用ArrayAdapter将使您可以致电collectWith((懒惰而不是急切,如果您的逗号分隔阵列有很多数据,这可能是有益的。

MutableMap<String, String> config = ArrayAdapter.adapt(data.split(","))
        .asLazy()
        .collectWith(String::split, "=")
        .toMap(a -> a[0], a -> a[1]);

您也可以将Arrays.stream()与EC中的Collectors2一起使用,但是您不能像使用collectWith一样使用map的方法参考。

MutableMap<String, String> config = Arrays.stream(data.split(","))
        .map(string -> string.split("="))
        .collect(Collectors2.toMap(a -> a[0], a -> a[1]));

最新更新