java集合框架(一)ArrayList

1、ArrayList常用方法

ArrayList 實現(xiàn)了List接口,常見的寫法會把引用聲明為接口List類型

public class TestCollection {
    public static void main(String[] args) {
        ArrayList heros = new ArrayList();
        for (int i = 0; i < 5; i++) {
            heros.add(new Hero("hero"+i));
        }
        System.out.println(heros);
        //在指定位置增加對象
        Hero specialHero = new Hero("special hero");
        heros.add(3, specialHero);
        System.out.println(heros);
        //判斷對象是否在容器中
        System.out.println(heros.contains(specialHero));
        //獲取指定位置的對象
        System.out.println(heros.get(3));
        //獲取對象所處位置
        System.out.println(heros.indexOf(specialHero));
        System.out.println(heros.indexOf(new Hero("hero1")));
        //刪除對象
        heros.remove(2);
        System.out.println(heros);
        heros.remove(specialHero);
        System.out.println(heros);
        //替換指定位置元素
        heros.set(3,new Hero("替換"));
        System.out.println(heros);
        //獲取容器的大小
        System.out.println(heros.size());
        //轉(zhuǎn)換為數(shù)組
        Hero hs[] = (Hero[])heros.toArray(new Hero[]{});
        System.out.println(hs);
        //把另一個容器的所有對象都加進(jìn)來
        ArrayList anotherHeros = new ArrayList();
        anotherHeros.add(new Hero("a"));
        anotherHeros.add(new Hero("b"));
        anotherHeros.add(new Hero("c"));
        heros.addAll(anotherHeros);
        System.out.println(heros);
        //清空數(shù)組
        heros.clear();
        System.out.println(heros);
    }
}

2、泛型Generic

不指定泛型的容器,可以存放任何類型的元素
指定了泛型的容器,只能存放指定類型的元素以及其子類

  • 泛型簡寫:
    List<Hero> genericheros = new ArrayList<Hero>();
    List<Hero> genericheros2 = new ArrayList<>();
public class TestCollection {
    public static void main(String[] args) {
        //對于不使用泛型的容器,可以往里面放英雄,也可以往里面放物品
        List heros = new ArrayList();
        heros.add(new Hero("蓋倫"));
        //本來用于存放英雄的容器,現(xiàn)在也可以存放物品了
        heros.add(new Item("冰杖"));
        //對象轉(zhuǎn)型會出現(xiàn)問題
        Hero h1=  (Hero) heros.get(0);
        //尤其是在容器里放的對象太多的時候,就記不清楚哪個位置放的是哪種類型的對象了
        Hero h2=  (Hero) heros.get(1);
        //引入泛型Generic
        //聲明容器的時候,就指定了這種容器,只能放Hero,放其他的就會出錯
        List<Hero> genericheros = new ArrayList<Hero>();
        genericheros.add(new Hero("蓋倫"));
        //如果不是Hero類型,根本就放不進(jìn)去
        //genericheros.add(new Item("冰杖"));
        //除此之外,還能存放Hero的子類
        genericheros.add(new APHero());
        //并且在取出數(shù)據(jù)的時候,不需要再進(jìn)行轉(zhuǎn)型了,因為里面肯定是放的Hero或者其子類
        Hero h = genericheros.get(0);
    }
}

3、遍歷容器

  • (1)for循環(huán)遍歷
public class TestCollection {
    public static void main(String[] args) {
        List<Hero> heros = new ArrayList<Hero>();
        // 放5個Hero進(jìn)入容器
        for (int i = 0; i < 5; i++) {
            heros.add(new Hero("hero name " + i));
        }
        // 第一種遍歷 for循環(huán)
        System.out.println("--------for 循環(huán)-------");
        for (int i = 0; i < heros.size(); i++) {
            Hero h = heros.get(i);
            System.out.println(h);
        }
    }
}
  • (2)迭代器遍歷
public class TestCollection {
    public static void main(String[] args) {
        List<Hero> heros = new ArrayList<Hero>();
        //放5個Hero進(jìn)入容器
        for (int i = 0; i < 5; i++) {
            heros.add(new Hero("hero name " +i));
        }
        //第二種遍歷,使用迭代器
        System.out.println("--------使用while的iterator-------");
        Iterator<Hero> it= heros.iterator();
        //從最開始的位置判斷"下一個"位置是否有數(shù)據(jù)
        //如果有就通過next取出來,并且把指針向下移動
        //直到"下一個"位置沒有數(shù)據(jù)
        while(it.hasNext()){
            Hero h = it.next();
            System.out.println(h);
        }
        //迭代器的for寫法
        System.out.println("--------使用for的iterator-------");
        for (Iterator<Hero> iterator = heros.iterator(); iterator.hasNext();) {
            Hero hero = (Hero) iterator.next();
            System.out.println(hero);
        }
    }
}
  • (3)增強型for循環(huán)遍歷
public class TestCollection {
    public static void main(String[] args) {
        List<Hero> heros = new ArrayList<Hero>();
        // 放5個Hero進(jìn)入容器
        for (int i = 0; i < 5; i++) {
            heros.add(new Hero("hero name " + i));
        }
        // 第三種,增強型for循環(huán)
        System.out.println("--------增強型for循環(huán)-------");
        for (Hero h : heros) {
            System.out.println(h);
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容