什么';用一个命令连接多个列表是一个很好的Java习惯用法?

什么';用一个命令连接多个列表是一个很好的Java习惯用法?,java,list,api,collections,concatenation,Java,List,Api,Collections,Concatenation,我想用一个命令连接多个列表,例如执行以下操作: myFirstList.concat(mySecondList).concat(myThirdList); List<String> testList1 = new ArrayList<String>(); testList1.add("one"); testList1.add("two"); List<String> testList2 = new ArrayList<Strin

我想用一个命令连接多个列表,例如执行以下操作:

myFirstList.concat(mySecondList).concat(myThirdList);
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"
或许

List.concat(myFirstList, mySecondList,myThirdList);
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"
i、 我想要一些类似的东西

List<T> concat(List<T> additional);
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"
哪个更可行。有没有这个包裹

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"
注意:

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"
是的,我知道我可以使用
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"
List testList1=new ArrayList();
测试列表1.添加(“一”);
testList1.添加(“两个”);
List testList2=new ArrayList();
测试列表2.添加(“三”);
testList2.addAll(testList1);
//testList2现在有“三”、“一”、“二”
使用方法:

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"
List testList1=new ArrayList();
测试列表1.添加(“一”);
testList1.添加(“两个”);
List testList2=new ArrayList();
测试列表2.添加(“三”);
testList2.addAll(testList1);
//testList2现在有“三”、“一”、“二”

您可以使用
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"
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;
    }
}
类列表生成器{
私有列表=新的ArrayList();
公共ListBuilder concat(列表其他){
this.list.addAll(其他);
归还这个;
}
公共列表getAll(){
返回此.list;
}
}
用法:

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"
ListBuilder<String> builder = new ListBuilder<String>();
builder.concat(myFirstList).concat(mySecondList).concat(myThirdList);

System.out.println(builder.getAll());
ListBuilder=newlistbuilder();
concat(myFirstList).concat(mySecondList).concat(myThirdList);
System.out.println(builder.getAll());

您可以使用
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"
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;
    }
}
类列表生成器{
私有列表=新的ArrayList();
公共ListBuilder concat(列表其他){
this.list.addAll(其他);
归还这个;
}
公共列表getAll(){
返回此.list;
}
}
用法:

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"
ListBuilder<String> builder = new ListBuilder<String>();
builder.concat(myFirstList).concat(mySecondList).concat(myThirdList);

System.out.println(builder.getAll());
ListBuilder=newlistbuilder();
concat(myFirstList).concat(mySecondList).concat(myThirdList);
System.out.println(builder.getAll());

它不连锁,但List有addAll方法。真的有必要用这个链子吗?@dystroy:我没说有必要。显然,没有它,Java是图灵完备的。。。我在寻找一个方便的习惯用法。问题是为了有一个连贯的语言/框架,你必须用很多函数来实现。这根本不是标准库的设计方式。我并不是说它是好的(java冗长是痛苦的),但是在一个方法上拥有链接功能只会破坏一致性,并且没有帮助。@dystroy:但我不一定要问标准库。Guava没有类似的东西,Apache Commons.Collections也没有。最后我自己写了一个小方法,但这听起来不是正确的做法。它不连锁,但列表中有addAll方法。真的有必要用这个链子吗?@dystroy:我没说有必要。显然,没有它,Java是图灵完备的。。。我在寻找一个方便的习惯用法。问题是为了有一个连贯的语言/框架,你必须用很多函数来实现。这根本不是标准库的设计方式。我并不是说它是好的(java冗长是痛苦的),但是在一个方法上拥有链接功能只会破坏一致性,并且没有帮助。@dystroy:但我不一定要问标准库。Guava没有类似的东西,Apache Commons.Collections也没有。最后我自己写了一个小方法,但这听起来不是正确的做法。在我看来,增加开销使java看起来像另一种语言似乎不是一个好主意。这可能是一个模式,当建立一个全新的公用事业,但不只是为了这个。[不是对这个答案的批评,而是一般性的评论]在我看来,仅仅为了让java看起来像另一种语言而增加开销似乎不是一个好主意。这可能是一个模式,当建立一个全新的公用事业,但不只是为了这个。[不是对这个答案的批评,而是一般性的评论]编辑这个问题是为了澄清为什么这不能解决我的问题。编辑这个问题是为了澄清为什么这不能解决我的问题。