2015-04-04 5 views
2

Учитывая непустое ArrayList, что является самым элегантным способом петли через элементы отдыха при повторении этого списка?java.util.ArrayList цикл через элементы покоя внутри цикла

Give an ArrayList instance 'exampleList' contains five strings: ["A", "B", "C", "D", "E"] 

в то время как цикл через него:

for(String s : exampleList){ 
// when s is "A", I want to loop through "B"-"E", inside this loop 
// when s is "B", I want to loop through "C"-"E", inside this loop 
// when s is "C", I want to loop through "D"-"E", inside this loop 
} 

ответ

4

Лучший способ, вероятно, использовать традиционный цикл:

for (int i=0; i<exampleList.size(); i++) { 
    String s = exampleList.get(i); 
    for (int j=i+1; j<exampleList.size(); j++) { 
     String other = exampleList.get(j); 
    } 
} 
0

хорошо я согласен с @Eran ответить на традиционный цикл, но я дать мои старания вместе с итератором

List<String> exampleList = new ArrayList<String>(Arrays.asList("a", "b", "c")); 
    Iterator<String> iterator = exampleList.iterator(); 
    while (iterator.hasNext()) { 
     int start=exampleList.indexOf(iterator.next()); 
     List lst = exampleList.subList(start,exampleList.size()); 
     for(int i=0; i< lst.size() ; i++) 
      System.out.println(lst.get(i)); 
    } 
} 
0

Вы также можете использовать stream's skip(), для хорошего кода.

List<String> coreModules = new ArrayList<String>(Arrays.asList("A","B","C","D")); 
    for(int a=0;a<coreModules.size();a++){ 
     coreModules.stream().skip(a).forEach(item -> System.out.println(item)); 
    } 

Хотя требуется java 1.8, но выглядит элегантно.

Here является документом для stream, который имеет много таких полезных фильтров.