У меня есть хэш-набор предварительно. Есть ли быстрый способ сделать хэш-набор PreIDs = для каждого x. getId в Pre? (на языке Java)

#java #class #methods #hashset

#Ява #класс #методы #набор хэшей

Вопрос:

Есть класс Prerequisite , у него есть метод getID() .

Вместо того, чтобы делать

 HashSetlt;intgt; PreIDs = new HashSetlt;gt;();  for(Prerequisite p: pre// HashSet of Prerequisites) {  PreIDs.add(p.getID()) }  

существует ли более эффективный или более краткий способ вызова метода через хэш-набор?

Комментарии:

1. Более эффективного способа практически не существует. То, что у вас есть, настолько хорошо, насколько это возможно. Вы сами решаете, является ли это более кратким: pre.forEach(p -gt; preIDs.add(p.getID()))

2. Это хороший лайнер. Мне это нравится

Ответ №1:

Как сказал @ernest_k, на мой взгляд, более эффективного способа тоже нет. Но мы можем записать всю эту логику в одной строке, как показано ниже (если вы используете Java 8 или выше), используя потоки:

 Setlt;Integergt; PreIDs = pre.stream()  .map(Prerequisite::getID)  .collect(Collectors.toSet());