Java 如何将一个类的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:
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 of
interfaceC

class classIterable implements Iterable<interfaceC> {
        private List<interfaceC> internalList = null;
    }
类classIterable实现了Iterable{
私有列表internalList=null;
}

可能适用于u

如果我的
ClassB
构造函数接受更多参数,如何传入这些参数?可以使用lambda表达式代替构造函数引用,例如
a->new ClassB(a,other,args)