Есть Stream
Например, для "word":
[word, hello, dude, word and word2, stackoverflow, question, ask, word, example]
=>
[[hello, dude], [stackoverflow, question, ask], [example]]
(Stream
Ответ
Можно собрать в Map по группам (группа -> список слов), а затем развернуть значения. Пример:
Stream
Если нужен результат в виде List> то:
List> listResult = new ArrayList<>(src.map(s -> new AbstractMap.SimpleEntry<>(s, s.startsWith("word") ? 0 * group.incrementAndGet() - 1 : group.get()))
.filter(entry -> entry.getValue() > -1)
.collect(Collectors.groupingBy(Map.Entry::getValue, Collectors.mapping(Map.Entry::getKey, Collectors.toList())))
.values());
Хотя в вашей ситуации непонятно зачем использовать именно stream-ы - проще просто проитерироваться по коллекции и собрать результат в нужном виде.
Комментариев нет:
Отправить комментарий