使用单个命令连接多个列表有什么好的Java习惯用法?

时间:2013-01-14 11:52:18

标签: java list api collections concatenation

我想用 single 命令连接多个列表,例如做类似的事情:

myFirstList.concat(mySecondList).concat(myThirdList);

或者

List.concat(myFirstList, mySecondList,myThirdList);

即。我喜欢像

这样的东西
List<T> concat(List<T> additional);

作为List的成员(不能有,我猜...... :-()或

static <T> List<T> concat(List<T>... lists);

更可行。有没有这个包?

注意:

是的,我知道我可以使用addAll()但是返回一个布尔值,所以你不能在同一个命令中重复使用它。

2 个答案:

答案 0 :(得分:1)

使用addAll()方法:

List<String> testList1 = new ArrayList<String>();           
testList1.add("one");
testList1.add("two");

List<String> testList2 = new ArrayList<String>();
testList2.add("three");

testList2.addAll(testList1);
//testList2 now has "three","one","two"

答案 1 :(得分:0)

您可以使用addAll方法并为此创建一个小构建器:

class ListBuilder<T> {
    private List<T> list = new ArrayList<T>();

    public ListBuilder<T> concat(List<T> other) {
        this.list.addAll(other);
        return this;
    }

    public List<T> getAll() {
        return this.list;
    }
}

用法:

ListBuilder<String> builder = new ListBuilder<String>();
builder.concat(myFirstList).concat(mySecondList).concat(myThirdList);

System.out.println(builder.getAll());