gpt4 book ai didi

java - 谷歌 Collection 中是否有一个字符串来映射拆分器

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:06 24 4
gpt4 key购买 nike

我在谷歌 Collection 中寻找与 map 连接器相反的东西。有没有这样的东西,如果没有,为什么?

编辑:这是我希望的示例:

Map<String,String> myMap = Splitter.on(",").keyValueSeparator("=").split("k1=v1,k2=v2");

编辑:我开了一个request并得到实现。将在 Guava R10 中可用。

最佳答案

这是一个提供方法的类 Maps2

Map<String, String> mapSequence(String)

它还提供了两个重载方法,您可以在其中更改使用的分隔符 a) 键和值之间(默认值:=)和 b) 条目之间(默认值:,)。像 SplitterIterables 这样的 Guava 类在内部用于完成这项工作。返回的映射是 LinkedHashMap,因此保留了输入顺序。

public final class Maps2{

public static final String DEFAULT_ENTRY_DELIMITER = ",";
public static final String DEFAULT_KEYVALUE_DELIMITER = "=";

private Maps2(){}

public static Map<String, String> mapSequence(final String sequence){
return mapSequence(sequence, DEFAULT_KEYVALUE_DELIMITER);
}

public static Map<String, String> mapSequence(final String sequence,
final String keyValueDelim){
return mapSequence(sequence, keyValueDelim, DEFAULT_ENTRY_DELIMITER);
}

public static Map<String, String> mapSequence(final String sequence,
final String keyValueDelim, final String entryDelim){

final Splitter entrySplitter = Splitter.on(entryDelim)
.trimResults();
final Splitter keyValueSplitter = Splitter.on(keyValueDelim)
.trimResults();
final Map<String, String> map = Maps.newLinkedHashMap();
for(final String token : entrySplitter.split(sequence)){
final String[] items =
Iterables.newArray(
keyValueSplitter.split(token), String.class);
if(items.length != 2){
throw new IllegalArgumentException(
"Map String not well-formed");
}
map.put(items[0], items[1]);
}
return map;
}

}

测试代码:

public static void main(final String[] args){
// note the randomly spread whitespace in the test code,
// also the last entry has no value.
// using Splitter().trimResults() we can handle junk like that
final Map<String, String> map = Maps2.mapSequence("k1=v1 ,k2=v2, k3 =");
System.out.println(map);
}

输出:

{k1=v1, k2=v2, k3=}

关于java - 谷歌 Collection 中是否有一个字符串来映射拆分器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com