Должен ли я использовать API Java 8 Streams для объединения двух коллекций?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Должен ли я использовать API Java 8 Streams для объединения двух коллекций?

Сообщение Anonymous »

У меня есть такая ситуация, когда кажется, что API Java 8 Streams будет полезен, но я не совсем уверен, как это может быть. < /p>

из двух коллекций С различными типами элементов я хочу создать третью коллекцию, элементы которых являются все возможные пары из обеих коллекций. В основном: < /p>

Два различных типа элементов ... < /p>

public class A {}
public class B {}
< /code>

A "пара" as и bs. < /p>

public class Pair {
private A a;
private B b;

public Pair(A a, B b){
this a = a;
this b = b;
}
}


Комбинация « », сделанная с использованием старого стиля java.util.collection api:

public Collection combine(Collection as, Collection bs){
Collection pairs = new ArrayList();
foreach(A a: as){
foreach(B b: bs){
Pair pair = new Pair(a,b);
pairs.add(pair);
}
}
return pairs;
}
< /code>

Заказ в полученной паре не важна. Таким образом, каждый экземпляр пары может быть создан и добавлен в полученную коллекцию параллельно. Как я мог достичь этого?
as.foreach(
a -> {
bs.foreach(
b -> {
Pair pair = new Pair(a,b);
pairs.add(pair);
}
}
);
< /code>

Этот пример был сделан тривиальным ради упрощения. Пара классов является примером обработки двух элементов в третий (то есть java.util.function.bifunction ), и добавление их в коллекцию является просто примером изменчивого восстановления. < /p>

есть более элегантный способ сделать это? Или предпочтительнее, более выгодно в отношении эффективности? Что -то вроде < /p>

BiFunction combinator = Pair::new; //or any other function f(a,b)=c;

Stream pairStream =
Streams.unknownElegantMethod(as.stream(), bs.stream(), combinator);


Подробнее здесь: https://stackoverflow.com/questions/250 ... ollections
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»