Если все, что вам нужно, это отправить одно электронное письмо с «префиксом», тогда все, что вам нужно сделать, это группа:
Map<String, List<String>> distinctMap = fList.stream()
.collect(Collectors.groupingBy(s -> s.split("-")[0]));
distinctMap.forEach((str1, list) -> {
System.out.println("Sending e-mail for prefix " + str1);
createEmail(list);
});
Конечно, вы можете сделать это, используя цикл for, ноВы должны отправить электронное письмо только после всех итераций:
Map<String, List<String>> emailsByPrefix = new HashMap<>();
for (int i = 0; i < fList.size(); i++) {
String subString = fList.get(i).split("-")[0];
emailsByPrefix.merge(subString, Arrays.asList(fList.get(i)), (list1, list2) -> {
List<String> merged = new ArrayList<>();
merged.addAll(list1);
merged.addAll(list2);
return merged;
});
}
for (Entry<String, List<String>> emailEntry : emailsByPrefix.entrySet()) {
System.out.println("Sending e-mail for prefix " + emailEntry.getKey());
createEmail(emailEntry.getValue());
}