我想使用java 8更改Map值。
Map<String, String> attributeMap = new TreeMap<>();
attributeMap.put("C","FIRSTNAMe");
attributeMap.put("C3","1111");
attributeMap.put("C4","ABCNAMe");
更改后,作为字符串的输出应该看起来像
c='FIRSTNAMe',c3=111,c4='ABCNAMe'
任何人都可以帮助我。
答案 0 :(得分:1)
你可以创建一个方法transform
并传递一个Predicate
,以便何时引用:
public static String tranform(Map<String, String> attributeMap, Predicate<String> predicate) {
return attributeMap.entrySet()
.stream()
.collect(Collectors.mapping(e -> {
return e.getKey().toLowerCase() + "=" +
(predicate.test(e.getValue()) ? "'" + e.getValue() + "'" : e.getValue());
}, Collectors.joining(",")));
}
并称之为:
String result = tranform(attributeMap, "1111"::equals);
System.out.println(result); // c=FIRSTNAMe,c3='1111',c4=ABCNAMe
如果您只想引用数字,请使用其他Predicate
:
Predicate<String> predicate = s -> s.matches("\\d+");
String result = tranform(attributeMap, predicate);