是否有更好的方法将'='
划界的一系列字符串分析到地图中。
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]));