class Person {
public String name;
public double netWorth;
public Person(String name, String netWorth) { this.name = name; this.netWorth = netWorth; }
}
и следующий поток:
Stream.of(
new Person("Jeff Bezos", 12),
new Person("Jeff Bezos", 165_345_678_910),
new Person("Jeff Bezos", 1_234),
new Person("Jeff Bezos(1)", 1_234),
new Person("Jeff Bezos(1)(2)", 42),
new Person("Bill Gates", 130_000_000_000));
с помощью API Java Streams я хочу преобразовать поток выше так, чтобы:
- Person-ы с одинаковыми именами должны получать разные строки (путем добавления (i)) в конце имени
- без циклов/операторов if/промежуточных терминаторов потока
- порядок имен не имеет значения, например. из двух Person-ов с одинаковыми именами каждый из двух может получить (1) суффикс
new HashMap() {{
put("Jeff Bezos", 12);
put("Jeff Bezos(1)(1)(1)", 165_345_678_91);
put("Jeff Bezos(1)(1)(2)", 1_234);
put("Jeff Bezos(1)", 1_234);
put("Jeff Bezos(1)(2)", 42);
put("Bill Gates", 130_000_000_000);
}};
P.S. Сложность, порядок вещей: человек с самым высоким собственным капиталом должен получить самое чистое имя, например. с минимальными суффиксами и т. д.:
new HashMap() {{
put("Jeff Bezos", 165_345_678_91);
put("Jeff Bezos(1)(1)(1)", 1_234);
put("Jeff Bezos(1)(1)(2)", 12);
put("Jeff Bezos(1)(2)", 42);
put("Jeff Bezos(1)", 1_234);
put("Bill Gates", 130_000_000_000);
}};
Подробнее здесь: https://stackoverflow.com/questions/737 ... va-streams
Мобильная версия