Java 如何将一个类的Iterable转换为另一个类的Iterable?
我有一个一类的iterable:Java 如何将一个类的Iterable转换为另一个类的Iterable?,java,Java,我有一个一类的iterable:iterable classaitable。我有这样的第二节课: public class ClassB { private final ClassA classA; public ClassB(ClassA a) { this.classA = a; } } 我想将classaitable中的每个ClassA对象转换为ClassB对象,其中包含ClassA对象,并将它们放入ClassB的一个iterable中 我该怎么做
iterable classaitable
。我有这样的第二节课:
public class ClassB {
private final ClassA classA;
public ClassB(ClassA a) {
this.classA = a;
}
}
我想将classaitable
中的每个ClassA
对象转换为ClassB
对象,其中包含ClassA
对象,并将它们放入ClassB
的一个iterable中
我该怎么做?谢谢 您可以通过访问
拆分器
,使用将Iterable
转换为流
。在流中
可以将ClassA
中的元素映射到ClassB
,然后将它们收集到一个列表中,该列表是Iterable
Iterable<ClassB> iterB = StreamSupport.stream(iterable.spliterator(), false)
.map(ClassB::new)
.collect(Collectors.toList());
Iterable iterB=StreamSupport.stream(Iterable.spliterator(),false)
.map(ClassB::新建)
.collect(Collectors.toList());
当然,它可能不适合您的情况,但作为解决方案的一种变体:
1) 您可以创建界面:
interface interfaceC {
}
2) 并在ClassA
和ClassB
中实现它:
class ClassA implements interfaceC {
}
class ClassB implements interfaceC {
}
3) 然后使用iterable ofinterfaceC
class classIterable implements Iterable<interfaceC> {
private List<interfaceC> internalList = null;
}
类classIterable实现了Iterable{
私有列表internalList=null;
}
可能适用于u如果我的ClassB
构造函数接受更多参数,如何传入这些参数?可以使用lambda表达式代替构造函数引用,例如a->new ClassB(a,other,args)
。