我想把下面的字符串拆分并存储到HashMap中。
String responseString = "name~peter-add~mumbai-md~v-refNo~";
首先,我使用连字符 (-) 分隔字符串并将其存储到 ArrayList 中,代码如下:
public static List<String> getTokenizeString(String delimitedString, char separator) {
final Splitter splitter = Splitter.on(separator).trimResults();
final Iterable<String> tokens = splitter.split(delimitedString);
final List<String> tokenList = new ArrayList<String>();
for(String token: tokens){
tokenList.add(token);
}
return tokenList;
}
List<String> list = MyClass.getTokenizeString(responseString, "-");
然后使用以下代码将其转换为HashMap,使用流(stream)。
HashMap<String, String> = list.stream()
.collect(Collectors.toMap(k ->k.split("~")[0], v -> v.split("~")[1]));
由于refNo没有值,流收集器无法工作。
如果ArrayList中的元素数量是偶数,则可以正常工作。
有没有办法处理这个问题?还请建议如何使用Java 8流来完成这两个任务(我不想使用getTokenizeString()方法)。
split()
两次,一次用于-
,另一次用于~
,可以吗? - Vishwa Ratnasplit("~")
。 - Holger