我有一串字符串 -
Token1:Token2:Token3
这':'是分隔字符.这里Token3String可以包含分隔符或者可以不存在.我们有这个流转换为地图TOKEN1为键和值是二strings-的阵列array[0] = Token2和array[1] = Token3是否Token3存在其他,null.我尝试过类似的东西 -
return Arrays.stream(inputArray)
.map( elem -> elem.split(":"))
.filter( elem -> elem.length==2 )
.collect(Collectors.toMap( e-> e[0], e -> {e[1],e[2]}));
Run Code Online (Sandbox Code Playgroud)
但它没有用.如果Token3不存在或者包含分隔符,它就不会处理这种情况.
如何在Java8 lambda表达式中完成它?
我有两个字符串,列表类别和列表选项列表,我的目标是将这两个列表的内容连接起来 -
List<String> categories = Arrays.asList(new String[]{"Cat-1" , "Cat-2", "Cat-3"});
List<String> choices = Arrays.asList(new String[]{"Choice-1" , "Choice-2", "Choice-3"});
List<String> result = new ArrayList<>(categories.size() * choices.size());
for (String cat : categories) {
for (String choice: choices) {
result.add(cat + ':' + choice);
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用java Streams实现它.
我有一个List<String>,我必须将它转换为Map,通过将相同长度的Strings 分组为a List,使用String长度作为键,排序顺序.它可以使用 -
Map<Integer, List<String>> result = new TreeMap<>();
for (String str : list) {
if (!result.containsKey(str.length())) {
result.put(str.length(), new ArrayList<>());
}
result.get(str.length()).add(str);
}
Run Code Online (Sandbox Code Playgroud)
我们怎样才能使用Java 8流?