Как получить первые 5 значений из LinkedHashSet?

У меня есть LinkedHashSet, который содержит несколько значений.

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

Я хочу перебрать набор значений и отобразить первые пять значений из числа элементов, хранящихся в наборе. Я использовал цикл for для перебора значений и отображения данных, см. Ниже:

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

Это выводит все значения, хранящиеся в LinkedHashSet. Какие изменения я должен внести в свой код, чтобы получить только первые 5 значений из набора.

4 ответа

Решение
int i = 0;
for (String sentences : lhs) {       
    if (i > 4) break; 
    text.append(sentences);
    i++;
}

Вы можете получить свои наборы Iterator

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

и перейти к next() элемент N раз (при условии, что это все еще hasNext() элемент)

int counter = 0;
while(it.hasNext() && counter++ < N){
    String element = it.next();
    ...
}

Если бы у вас был 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());
  }
Другие вопросы по тегам