這是我的地圖:
Map<String, Object> params = new HashMap<>();
params.put("topicRef", "update-123456-78925-new-u1z1w3");
params.put("parentRef", "update-123456-78925-new-u1z1w3");
Script script = new Script(ScriptType.INLINE, "painless",
String.format("ctx._source.parentRef = params.parentRef; ctx._source.topicRef = params.topicRef"),
params);
request.setScript(script);
我想將我的地圖轉換為字串,但我想更改模式,例如:
"ctx._source.key = value;ctx._source.key = value"
我想為鍵值添加一個前綴ctx._source.key和一個后綴" ="(空格和相等),然后我想用分號分隔每個條目。
uj5u.com熱心網友回復:
String formattedMap = params.entrySet().
stream()
.map(e -> "ctx._source." e.getKey() " = " e.getValue())
.collect(Collectors.joining(","));
uj5u.com熱心網友回復:
嘗試這樣的事情:
Map<String, String> yourMap = /*...*/;
StringBuilder bob = new StringBuilder();
yourMap.forEach((key, value) -> bob.append(key).append("=").append(value).append(";"));
String result = bob.toString();
如有必要,您可以通過洗掉最后一個;結果String.concat()。
uj5u.com熱心網友回復:
您可以流式傳輸您Map的條目,然后使用map操作將每個條目映射到格式化String并最終將每個元素與collect(Collectors.joining(";"))操作連接起來。
Map<String, Object> params = new HashMap<>();
params.put("topicRef", "update-123456-78925-new-u1z1w3");
params.put("parentRef", "update-123456-78925-new-u1z1w3");
String result = params.entrySet().stream()
.map(entry -> String.format("%s%s%s%s", "ctx._source.", entry.getKey(), " =", entry.getValue()))
.collect(Collectors.joining(";"));
System.out.println(result);
這是測驗代碼的鏈接

uj5u.com熱心網友回復:
String result = params.entrySet()
.stream()
.map(x -> "ctx._source." x.getKey() " = " x.getValue())
.reduce((x, y) -> x ";" y).get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481739.html
