4

我有一个包含多个值的 LinkedHashSet。

LinkedHashSet<String> lhs = new LinkedHashSet<String>();

我想遍历一组值并显示该组中存储的项目数中的前五个值。我使用了一个 for 循环来遍历值并显示数据,见下文:

for (String sent : lhs) {        
    text.append(sent);                                          
}

这将输出存储在 LinkedHashSet 中的所有值。为了只从集合中获取前 5 个值,我应该对我的代码进行哪些更改。

4

4 回答 4

6

你可以得到你的套Iterator

Iterator<String> it = yourSet.iterator();

并移动到next()元素 N 次(假设它仍然是hasNext()元素)

int counter = 0;
while(it.hasNext() && counter++ < N){
    String element = it.next();
    ...
}
于 2016-02-22T21:59:47.623 回答
5

如果你有java8,那么我会建议这样的事情:

yourLinkedHashSet
    .stream()
    .limit(5)
    .forEachOrdered(text::append);

解释:

  • stream()将从集合中获取一个接一个的字符串
  • limit(5)处理完五个元素后将停止计算
  • forEachOrdered(...)对每个项目采取行动,一个接一个
  • text::append是每个项目要执行的操作
于 2016-02-22T22:12:14.233 回答
4
int i = 0;
for (String sentences : lhs) {       
    if (i > 4) break; 
    text.append(sentences);
    i++;
}
于 2016-02-22T22:02:55.920 回答
0

您可以在没有反声明的情况下使用 subList

  Iterator<String> iter = new ArrayList<>(lhs).subList(5, lhs.size())
    .iterator();
  while (iter.hasNext()) {
    text.append(iter.next());
  }
于 2017-09-01T08:09:35.500 回答