泛型在集合中的使用


1. 在集合中使用泛型之前的例子

@Test
    public void test1(){
        ArrayList list = new ArrayList();
        //需求:存放學生的成績
        list.add(78);
        list.add(76);
        list.add(89);
        list.add(88);
        //問題一:類型不安全
//        list.add("Tom");

        for(Object score : list){
            //問題二:強轉時,可能出現ClassCastException
            int stuScore = (Integer) score;

            System.out.println(stuScore);

        }

    }

圖示:

2. 在集合中使用泛型例子1

@Test
    public void test2(){
       ArrayList<Integer> list =  new ArrayList<Integer>();

        list.add(78);
        list.add(87);
        list.add(99);
        list.add(65);
        //編譯時,就會進行類型檢查,保證數據的安全
//        list.add("Tom");

        //方式一:
//        for(Integer score : list){
//            //避免了強轉操作
//            int stuScore = score;
//
//            System.out.println(stuScore);
//
//        }
        //方式二:
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            int stuScore = iterator.next();
            System.out.println(stuScore);
        }

    }

圖示:

3. 在集合中使用泛型例子2

//在集合中使用泛型的情況:以HashMap為例
    @Test
    public void test3(){
//        Map<String,Integer> map = new HashMap<String,Integer>();
        //jdk7新特性:類型推斷
        Map<String,Integer> map = new HashMap<>();

        map.put("Tom",87);
        map.put("Jerry",87);
        map.put("Jack",67);

//        map.put(123,"ABC");
        //泛型的嵌套
        Set<Map.Entry<String,Integer>> entry = map.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator = entry.iterator();

        while(iterator.hasNext()){
            Map.Entry<String, Integer> e = iterator.next();
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key + "----" + value);
        }

    }

4. 集合中使用泛型總結:

  • ① 集合接口或集合類在jdk5.0時都修改為帶泛型的結構。
  • ② 在實例化集合類時,可以指明具體的泛型類型
  • ③ 指明完以后,在集合類或接口中凡是定義類或接口時,內部結構(比如:方法、構造器、屬性等)使用到類的泛型的位置,都指定為實例化的泛型類型。
  • 比如:add(E e) --->實例化以后:add(Integer e)
  • ④ 注意點:泛型的類型必須是類,不能是基本數據類型。需要用到基本數據類型的位置,拿包裝類替換
  • ⑤ 如果實例化時,沒指明泛型的類型。默認類型為java.lang.Object類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM