Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在两个方向上合并两个列表_Java_List_Arraylist_Merge - Fatal编程技术网

Java 在两个方向上合并两个列表

Java 在两个方向上合并两个列表,java,list,arraylist,merge,Java,List,Arraylist,Merge,在两个方向上合并两个列表的有效方法是什么,一个是递增方式,另一个是递减方式。两个列表的长度不同 List1 = ["eight", "nine"] // first element "eight" should be the starting point List2 = ["three", "six", "seven", "eight"] // last element "eight" should be the starting point 所以最终的结果是 c= ["eight", "e

在两个方向上合并两个列表的有效方法是什么,一个是递增方式,另一个是递减方式。两个列表的长度不同

List1 = ["eight", "nine"] // first element "eight" should be the starting point
List2 = ["three", "six", "seven", "eight"] // last element "eight" should be the starting point 
所以最终的结果是

c= ["eight", "eight", "nine", "seven", "six", "three"]
这不完全是我的代码,但这是一个例子。在这里,所有列表都是从每个列表的
第一个元素
来考虑的。但是我需要一个从
第一个元素
最后一个元素
,另一个从
最后一个元素
第一个元素

List<String> a = [ "one", "two", "three", "four" ];
List<String> b = [ "fee", "fi" ];
List<String> c = [ "broccoli", "tomato", "potato" ];
List<String> d = [ "purple" ];

Iterator<String> interleaved = Iterators.interleave( 
    a.iterator(), b.iterator(),
    c.iterator(), d.iterator() );
int count = 1;
while ( interleaved.hasNext() ) {
   System.out.println( count++ + ": " + interleaved.next() );
}

Output:

1: one
2: fee
3: broccoli
4: purple
5: two
6: fi
7: tomato
8: three
9: potato
10: four
列表a=[“一”、“二”、“三”、“四”];
清单b=[“费用”、“金融机构”];
清单c=[“西兰花”、“西红柿”、“土豆”];
列表d=[“紫色”];
迭代器交错=迭代器。交错(
a、 迭代器(),b.迭代器(),
c、 迭代器(),d.迭代器());
整数计数=1;
while(interleave.hasNext()){
System.out.println(count+++:“+interleaved.next());
}
输出:
1:1
2:费用
3:西兰花
4:紫色
5:2
6:fi
7:西红柿
8:3
9:土豆
10:4

您可以使用
集合
,如下所示:

String[] a = ...;
String[] b = ...;
ArrayList<String> firstList = new ArrayList<String>();
ArrayList<String> secondList = new ArrayList<String>();
Collections.addAll(firstList, a);
Collections.addAll(secondList, b);
Collections.reverse(secondList);
firstList.addAll(secondList);
String[]a=。。。;
字符串[]b=。。。;
ArrayList firstList=新的ArrayList();
ArrayList secondList=新的ArrayList();
Collections.addAll(firstList,a);
集合。添加全部(第二个列表,b);
收款。反向(第二列表);
firstList.addAll(第二个列表);

有一个方法,该方法返回一个可通过调用向后迭代的,因此您可以创建自己的类实现,该类实现包装另一个
ListIterator
,颠倒迭代顺序,即调用
previous()
反之亦然。

你能展示代码吗?你能稍微澄清一下你的问题吗?现在清楚了吗@Mr.Robot?所以,你几乎得到了你想要的东西,但只是想让一些迭代器反向迭代,而不调用它吗?我不认为
迭代器。interleave()
已经实现了。您也必须自己实现该列表。
a
b
是ArrayList而不是Array。这样更容易,因为您已经有两个列表,所以可以立即转到“reverse()”行