如何从 LinkedHashSet 中获取前 5 个值?

How to obtain first 5 values from a LinkedHashSet?

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

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

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

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

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

你可以得到你的套装Iterator

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

并移动到next()元素N次(假设还是hasNext()元素)

int counter = 0;
while(it.hasNext() && counter++ < N){
    String element = it.next();
    ...
}
int i = 0;
for (String sentences : lhs) {       
    if (i > 4) break; 
    text.append(sentences);
    i++;
}

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

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

解释:

  • stream()将从集合中一个接一个地取出字符串
  • limit(5)会在处理完五个元素后停止计算
  • forEachOrdered(...) 对每一项采取行动,一个接一个
  • text::append 是每个项目要完成的操作

您可以在没有计数器声明的情况下使用 subList

  Iterator<String> iter = new ArrayList<>(lhs).subList(5, lhs.size())
    .iterator();
  while (iter.hasNext()) {
    text.append(iter.next());
  }