forLoop: --name5 "value5"--name4 "value4"--name3 "value3"--name2 "{\"x\": \"y\"}"--name1 "value1"
resetAllValues: --name5 "value5"--name4 "value4"--name3 "value3"--name2 "{\"x\": \"y\"}"--name1 "value1"
streamy: --name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name2 "{\"x\": \"y\"}"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name2 "{\"x\": \"y\"}"--name1 "value1"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name2 "{\"x\": \"y\"}"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name5 "value5"--name5 "value5"--name4 "value4"--name5 "value5"--name5 "value5"--name4 "value4"--name3 "value3"--name2 "{\"x\": \"y\"}"--name1 "value1"
package working;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class Temp {
public static void main(String[] cmd_lineParams) {
Map<String, String> map = new HashMap<>(5);
map.put("name1", "value1");
map.put("name2", "{\"x\": \"y\"}");
map.put("name3", "value3");
map.put("name4", "value4");
map.put("name5", "value5");
forLoop(map);
resetAllValues(new HashMap<String, String>(map));
streamy(new HashMap<String, String>(map));
}
private static final Matcher matcher = Pattern.compile("\"").matcher("ignored input");
private static final void forLoop(Map<String, String> map) {
StringBuilder builder = new StringBuilder();
for(Map.Entry<String, String> entry : map.entrySet()) {
String value = matcher.reset(entry.getValue()).replaceAll("\\\\\"");
builder.append("--").append(entry.getKey()).append(" \"").append(value).append("\"");
}
System.out.println("forLoop: " + builder.toString());
}
private static final void resetAllValues(Map<String, String> map) {
map = map.entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey(),
entry -> matcher.reset(entry.getValue()).replaceAll("\\\\\\\"")));
StringBuilder builder = new StringBuilder();
for(Map.Entry<String, String> entry : map.entrySet()) {
builder.append("--").append(entry.getKey()).append(" \"").append(entry.getValue()).append("\"");
}
System.out.println("resetAllValues: " + builder.toString());
}
private static final void streamy(Map<String, String> map) {
StringBuilder builder = new StringBuilder();
map.forEach((k,v) -> builder.append(
builder.append("--").append(k).append(" \"").append(
matcher.reset(v).replaceAll("\\\\\"")).append("\"")));
System.out.println("streamy: " + builder.toString());
}
}
(我九岁的孩子说我需要在这个问题的某个地方说“困难”。所以:困难。)
我想既然你说了困难,我就得回答这个!:)
map.entrySet().stream().map((entry) -> //stream each entry, map it to string value
"--" + entry.getKey() + " \"" + entry.getValue().replaceAll("\"", "\\\\\"") + "\"")
.collect(Collectors.joining(" ")); //and 'collect' or put them together by joining
我个人不喜欢使用流,因为它变得很难看,非常快,但它对更简单的循环有用。(例如,用某个字符联接所有值)但是,通过使用ParallelStream()
而不是Stream()
可以轻松地将其并行化
如果您希望值按某种顺序排列,这样它就不是那么随机(就像hashmap
那样),您可以在map之前进行排序:
.stream().sort((e1, e2) -> e1.getValue().compareTo(e2.getValue()))
.map(...)...
假设我有一个,我想替换一个值映射,例如: 顺便说一下,字符串也可以是多个字符
嗨,我尝试将以下Source类映射到以下Destation类。我使用了以下映射以将字符串值映射到列表字符串。它没有正确映射。我需要知道如何使用Dozer将2个字符串值映射到一个目标字符串列表中。
问题内容: 我是Java编程的新手。我创建了一个包含我的键值对的哈希映射,可用于将用户输入替换为对应于各个键的值。 即 我在公式评估中使用它 注意 :为用户提供了特定公式的特定输入方式(值1 +值2 +值3) 我正在使用(value1 value2 value3)并将其转换为(value1key value2key value3key) 更新: 我现在更好地理解该问题旨在帮助更好地了解如何利用哈希
问题内容: 我需要将单行的所有而不是空值放入一个字符串中,例如 表: 导致: 重要说明-我不知道字段名称/类型,因此它应该遍历所有字段,并且所有非null值都将添加到列表中。 看起来它可以使用xquery做到这一点,但找不到正确的语法。有什么提示吗? 谢谢! 问题答案: select T2.N.value(‘local-name(.)’, ‘nvarchar(128)’)+’: ‘+ T2.N.v
我试图将一个键的值链接到另一个键的值,但似乎无法使其工作。 例如,如果我创建一个哈希映射,我希望能够创建一个键值对,比如(“x”,0)。然后,我希望能够将另一个键值对值添加到第一个键值对中,因此,如果我有(“x”,map.get(“y”))和(“y”,0),我希望能够以某种方式将其链接起来,这样,如果我现在更新y,使其(“y”,10),map。得到(“x”);也应该返回10。 我不知道如何让这个工
假设我有以下工作的lambda表达式: 我想在过滤器语句之前创建一个具有2个值的流。所以我想做一个映射,但仍然保留原始值。我想实现这样的事情: 这可能与Java8流?我已经看了收集(GroupingBy()),但仍然没有成功。