如果我有HashSet<String>
,如何只检索集合中每个元素的第一个单词?
要检索集合中每个字符串的第一个单词,请尝试以下操作:
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()
您可以像这样获得集合的第一个元素:
if (! set.isEmpty()) {
first = set.iterator().next();
}
但是,对于HashSet
,“ first”元素是任意的,因为它们是无序的,或者如Javadoc所说:
它不保证集合的迭代顺序;特别是,它不能保证顺序会随着时间的推移保持恒定。
而不是HashSet
,您可以使用保留插入顺序的HashSet
,或使用已排序的LinkedHashSet
,因此在两种情况下,“第一个”的定义都明确。