我有一个包含多个值的LinkedHashSet。
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
我想迭代这组值并显示存储在集合中的项目数的前五个值。我使用for循环迭代值并显示数据,见下文:
for (String sent : lhs) {
text.append(sent);
}
这将输出存储在LinkedHashSet中的所有值。我应该对我的代码进行哪些更改,以便仅从集合中获取前5个值。
答案 0 :(得分:6)
你可以获得你的集Iterator
Iterator<String> it = yourSet.iterator();
并移动到next()
元素N次(假设它仍为hasNext()
元素)
int counter = 0;
while(it.hasNext() && counter++ < N){
String element = it.next();
...
}
答案 1 :(得分:4)
如果您有 java8 ,那么我会建议这样的事情:
yourLinkedHashSet
.stream()
.limit(5)
.forEachOrdered(text::append);
说明:
stream()
将从集合中接受一个接一个的字符串limit(5)
将在处理完五个元素后停止计算forEachOrdered(...)
一个接一个地对每个项目采取行动text::append
是每个项目要执行的操作答案 2 :(得分:3)
int i = 0;
for (String sentences : lhs) {
if (i > 4) break;
text.append(sentences);
i++;
}
答案 3 :(得分:0)
您可以使用不带计数器声明的subList
Iterator<String> iter = new ArrayList<>(lhs).subList(5, lhs.size())
.iterator();
while (iter.hasNext()) {
text.append(iter.next());
}