2015-10-24 5 views
3

Каков эффективный способ объединения двух списков в двух направлениях, один с шагом в несколько и наоборот. Оба списка не имеют одинаковой длины.Слияние двух списков в двух направлениях

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"] 

Это не совсем мой код, но это пример. Здесь все списки учитываются от first-element каждого списка. Но мне нужно один должен быть от first-element к last-element в то время как другой из last-element в first-element

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 
+2

Можете ли вы показать код? –

+0

может убрать ур вопрос немного? – Roushan45

+0

Теперь ясно @ Mr.Robot? – Jamal

ответ

0

Вы можете сделать использование Collections следующим образом:

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); 
+0

'a' и' b' ArrayList не массивы – Jamal

+0

, тогда это еще проще, так как у вас уже есть два списка, чтобы вы могли сразу перейти к строке «reverse()» –

0

List имеет listIterator() метод, который возвращает ListIterator который можно повторить назад, вызвав previous(), чтобы вы могли создать свой собственный класс, реализующий ListIterator, который обертывает другой ListIterator, изменяя порядок итерации, то есть next() звонки previous() и наоборот.

Смежные вопросы