У меня есть такая ситуация, когда кажется, что 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
Должен ли я использовать API Java 8 Streams для объединения двух коллекций? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение