HashSet of Strings и поиск только первого слова каждого элемента - PullRequest
0 голосов
/ 25 февраля 2020

Если у меня есть HashSet<String>, как я могу получить только первое слово каждого элемента набора?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Чтобы получить первое слово каждой строки в вашем наборе, попробуйте следующее:

Collection<String> firstWords = set.stream()
    .map(s -> s.split(" ")[0]) // split on spaces, take first element of the split
    .collect(Collectors.toSet());

Если вы хотите сохранить дубликаты, измените Collectors.toSet() на Collectors.toList()

0 голосов
/ 25 февраля 2020

Вы можете получить первый элемент набора следующим образом:

if (! set.isEmpty()) {
    first = set.iterator().next();
}

Однако «первый» элемент - это произвольная вещь для HashSet, поскольку они неупорядоченный, или как говорит javado c:

Он не дает никаких гарантий относительно порядка итерации набора; в частности, это не гарантирует, что порядок будет оставаться постоянным во времени.

Вместо HashSet, вы можете использовать LinkedHashSet, который сохраняет порядок вставки , или TreeSet, с сортировкой , отсортированной , поэтому в обоих случаях «first» четко определен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...