如何将一个Iterable转换为另一个类的Iterable?

时间:2016-05-05 18:58:12

标签: java

我有一个类的可迭代:Iterable<ClassA> classAIterable。我有这样的第二堂课:

public class ClassB {
    private final ClassA classA;
    public ClassB(ClassA a) {
        this.classA = a;
    }
}

我想将ClassA中的每个classAIterable对象转换为包含ClassB对象的ClassA对象,并将它们放入ClassB的可迭代对象中1}}。

我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用StreamSupport.stream访问Iterable,将Stream转换为Spliterator。在Stream中,您可以将元素从ClassA映射到ClassB,然后将其收集到List,即Iterable

Iterable<ClassB> iterB = StreamSupport.stream(iterable.spliterator(), false)
    .map(ClassB::new)
    .collect(Collectors.toList());

答案 1 :(得分:0)

当然,它可能不适合您的情况,但作为解决方案的变体:

1)你可以创建界面:

interface interfaceC {
    }

2)并在ClassAClassB

中实施
class ClassA implements interfaceC {        
    }

class ClassB implements interfaceC {        
    }

3)然后使用interfaceC

的迭代
class classIterable implements Iterable<interfaceC> {
        private List<interfaceC> internalList = null;
    }

可能为你工作