Ways to iterate over a list in Java

后端 未结 12 2210
孤独总比滥情好
孤独总比滥情好 2020-11-22 00:46

Being somewhat new to the Java language I\'m trying to familiarize myself with all the ways (or at least the non-pathological ones) that one might iterate through a list (or

12条回答
  •  忘掉有多难
    2020-11-22 01:08

    Example of each kind listed in the question:

    ListIterationExample.java

    import java.util.*;
    
    public class ListIterationExample {
    
         public static void main(String []args){
            List numbers = new ArrayList();
    
            // populates list with initial values
            for (Integer i : Arrays.asList(0,1,2,3,4,5,6,7))
                numbers.add(i);
            printList(numbers);         // 0,1,2,3,4,5,6,7
    
            // replaces each element with twice its value
            for (int index=0; index < numbers.size(); index++) {
                numbers.set(index, numbers.get(index)*2); 
            }
            printList(numbers);         // 0,2,4,6,8,10,12,14
    
            // does nothing because list is not being changed
            for (Integer number : numbers) {
                number++; // number = new Integer(number+1);
            }
            printList(numbers);         // 0,2,4,6,8,10,12,14  
    
            // same as above -- just different syntax
            for (Iterator iter = numbers.iterator(); iter.hasNext(); ) {
                Integer number = iter.next();
                number++;
            }
            printList(numbers);         // 0,2,4,6,8,10,12,14
    
            // ListIterator provides an "add" method to insert elements
            // between the current element and the cursor
            for (ListIterator iter = numbers.listIterator(); iter.hasNext(); ) {
                Integer number = iter.next();
                iter.add(number+1);     // insert a number right before this
            }
            printList(numbers);         // 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
    
            // Iterator provides a "remove" method to delete elements
            // between the current element and the cursor
            for (Iterator iter = numbers.iterator(); iter.hasNext(); ) {
                Integer number = iter.next();
                if (number % 2 == 0)    // if number is even 
                    iter.remove();      // remove it from the collection
            }
            printList(numbers);         // 1,3,5,7,9,11,13,15
    
            // ListIterator provides a "set" method to replace elements
            for (ListIterator iter = numbers.listIterator(); iter.hasNext(); ) {
                Integer number = iter.next();
                iter.set(number/2);     // divide each element by 2
            }
            printList(numbers);         // 0,1,2,3,4,5,6,7
         }
    
         public static void printList(List numbers) {
            StringBuilder sb = new StringBuilder();
            for (Integer number : numbers) {
                sb.append(number);
                sb.append(",");
            }
            sb.deleteCharAt(sb.length()-1); // remove trailing comma
            System.out.println(sb.toString());
         }
    }
    

提交回复
热议问题