最优雅的方法是将数据从多个列表中提取到Java中的新列表中?

Han*_*etz 0 java coding-style list

这可能有点主观,但我经常发现,看看其他开发者如何处理某些日常细节会非常有趣.

我有这样的代码:

class A {
    public List<SomeType> getOneSet() { ... }
    public List<SomeType> getAnotherSet() { ... }
}

class B {
    public static OtherType convert(SomeType input) { ... }
}

// ...

A a = new A();
List<OtherType> rgResults = new ArrayList<OtherType>();
Run Code Online (Sandbox Code Playgroud)

现在将遵循相当于两个相同的for循环,如下所示:

for (SomeType input : a.getOneSet()) {
    rgResults.add(B.convert(input);
}

for (SomeType input : a.getAnotherSet()) {
    rgResults.add(B.convert(input);
}
Run Code Online (Sandbox Code Playgroud)

这有效,但它当然是代码重复.如果循环中的代码变得稍微复杂或者有两个以上的集合,那么这是不可接受的.

因此,我将循环放在一个以源和目标列表作为参数的函数中,但很想知道是否还有其他方法.特别是那些在你从不在多个地方调用函数时可能更合适的东西.

例如,我会喜欢以下,但由于我不能使用泛型数组,因此无效:

for (List<SomeType> rgSrc : new List<SomeType>[] { a.getOneSet(), a.getAnotherSet() } ) {
    for (SomeType src : rgSrc) {
        rgResults.add(B.convert(src));
    }
}
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 6

试试IteratorUtils.这有一个链迭代器的方法.