天天看點

增強for循環,Map,集合應用

 對存儲對象的容器進行疊代  

string [] arr = {"a", "b","c"};   //數組的靜态定義方式,隻試用于數組首次定義的時候

// 傳統方式

for(int i=0; i<arr.length; i++) {

    // i依次表示數組的角标

    string s =arr[i];

    system.out.println(s);

}

system.out.println("-------------------------------------");

// 在jdk5中我們可以使用增強for循環疊代

// 增強for循環括号裡寫兩個參數,第一個是聲明一個變量,變量類型必須是數組元素的類型

// 第二個就是需要疊代的容器

// for循環會循環容器的length次, 每次都将容器的第n-1個元素指派給聲明的變量

for(string s : arr) {

    // 循環體, 執行arr.length

    // 每次都将arr中的第n-1個元素給s

    system.out.println(s);   //

list list = new arraylist();

list.add("aaa");

list.add("bbb");

list.add("ccc");

// 傳統方式1

/* 1.獲得疊代器

iterator iter = list.iterator();

// 2.循環判斷疊代器是否有下一個

while(iter.hasnext()) {

    string str= (string) iter.next(); // 将疊代器的指針移向下一個,并将疊代目前指向的元素傳回

    system.out.println(str);

*/

// 傳統方式2

for(iterator iter=list.iterator(); iter.hasnext(); ){

    string s =(string) iter.next();

system.out.println("--------------------------------");

// 增強for循環, 沒有使用泛型的集合能不能使用增強for循環疊代?能

for(object obj : list) {

    string s=  (string) obj;

map map = new hashmap();

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

// 傳統方式疊代1

// 1. 獲得所有的key

set keys = map.keyset();

// 2.疊代keys獲得所有的key

iterator iter = keys.iterator();

    string key= (string) iter.next(); // a b c

    // 3.根據key獲得對應的value

    stringvalue = (string) map.get(key);

    system.out.println(key+ "=" + value);

system.out.println("---------------------------------");

// 傳統方式2,必須掌握這種方式

// 1.獲得所有的鍵值對entry對象

set entrys = map.entryset();

// 2.疊代出所有的entry

iter = entrys.iterator();

    map.entryentry = (entry) iter.next();

    // 分别獲得key和value

    string key= (string) entry.getkey();

    stringvalue = (string) entry.getvalue();

system.out.println("增強for循環疊代,");

// 增強for循環疊代,

// 原則上map集合是無法使用增強for循環來疊代的,

// 因為增強for循環隻能針對實作了iterable接口的集合進行疊代

// iterable是jdk5中新定義的接口,就一個方法iterator方法

// 隻有實作了iterable接口的類,才能保證一定有iterator方法

// java有這樣的限定是因為增強for循環内部還是用疊代器實作的

// 而實際上,我們可以通過某種方式來使用增強for循環

for(object obj : map.entryset()) {

    // obj 依次表示entry

    map.entryentry = (entry) obj;

    system.out.println(entry.getkey()+ "=" + entry.getvalue());

// 在使用疊代器疊代集合的過程中,不能對集合進行增删操作

@test

public void test4() {

    list list =new arraylist();

    list.add("wangwu");

    list.add("zhangsan");

    list.add("lisi");

    iteratoriter = list.iterator();

    while(iter.hasnext()){

       stringname = (string) iter.next();

       if("wangwu".equals(name)){

           // 從集合中删掉

           //list.remove(name);

           // 疊代過程中删除元素需要調用疊代器的方法

           iter.remove();    // 删除我疊代的集合被我疊代的最後一個元素

       }

    }

// 1 2 4

    system.out.println(list.size());

public void test5() {

    list.add("aa");

    list.add("bb");

    // 使用listiterator疊代器

    listiteratorlistiterator = list.listiterator();

    while(listiterator.hasnext()){

       listiterator.next();

       // 疊代過程中增加元素

       listiterator.add("cc");

//在使用增強for循環時,不能對元素進行指派

int[] arr = {1,2,3};

for(int num : arr) {

    num = 0;

system.out.println(arr[1]);