Lässt sich die folgende Methode
In der Map soll halt hinterher stehen:
Edit:
Ach, ich habe wohl einfach zu kompliziert gedacht:
Danke, dennoch.
getTemplate vielleicht vereinfachen, sodass ich das AtomicInteger ai, was nur ein Workaround darstellt, loswerde?
Java:
private static final HashMap<String, String> templates = new HashMap<>();
private static String getTemplate(String path, String... args) throws IOException {
if (!templates.containsKey(path)) {
try (InputStream templateStream = Main.class.getResourceAsStream(path)) {
assert templateStream != null;
templates.put(path, new String(templateStream.readAllBytes(), StandardCharsets.UTF_8));
}
}
AtomicInteger ai = new AtomicInteger(0); // Dies ist ein Workaround
return StringSubstitutor.replace(
templates.get(path),
Arrays.stream(args)
.reduce(
new HashMap<>(),
(map, element) -> {
map.put(ai.getAndIncrement() + "", element);
return map;
},
(map1, map2) -> {
map1.putAll(map2);
return map1;
}),
"{{",
"}}");
}
In der Map soll halt hinterher stehen:
(0,args[0]), (1,args[1]), usw.Edit:
Ach, ich habe wohl einfach zu kompliziert gedacht:
Java:
private static String getTemplate(String path, String... args) throws IOException {
if (!templates.containsKey(path)) {
try (InputStream templateStream = Main.class.getResourceAsStream(path)) {
assert templateStream != null;
templates.put(path, new String(templateStream.readAllBytes(), StandardCharsets.UTF_8));
}
}
return StringSubstitutor.replace(
templates.get(path),
IntStream.range(0, args.length)
.boxed()
.reduce(
new HashMap<>(),
(map, i) -> {
map.put(i + "", args[i]);
return map;
},
(map1, map2) -> {
map1.putAll(map2);
return map1;
}),
"{{",
"}}");
}
Danke, dennoch.
Zuletzt bearbeitet: