經常使用的API--集合

# 經常使用的API --> 集合
    * 首先咱們須要明白的是,集合和數組有什麼區別呢,咱們何時能夠使用集合,又在何時能夠使用數組呢?
        A:數組的長度不可變化,集合的長度能夠變化
        B:數組只能存儲同一種數據類型,集合能夠存儲任意數據類型的數據
            ArrayList list = new ArrayList();
            list.add(10); // list.add(new Integer(10));
            list.add("abc");
        C:數組能夠存儲基本數據類型,也能夠存儲引用數據類型(對象)
            int[] arr = new int[4];
            Student[] arr = new Student[3];
            集合只能存儲引用數據類型(對象)
    1. 集合的體系
        學頂層,用底層,子類均能繼承父類方法
        Collection(接口)
            |--List:特色 有序,有索引,可存儲重複元素
                |--ArrayList
                |--LinkedList
                |--Vector
            |--Set:無序,無索引,不可存儲重複元素
                |--HashSet
                    |--LinkedHashSet
                |--TreeSet
    2. Collection接口中的方法
            boolean add(E e) : 給集合添加元素
            boolean remove(Object obj) : 刪除集合中指定的元素
            boolean contains(Object obj) : 判斷集合中是否包含指定的元素
            int size() : 獲取集合中元素的個數
            Object[] toArray(): 將集合轉換爲數組 , 能夠使用該方法遍歷集合
            clear() : 清除全部的元素
            boolean isEmpty() : 判斷集合中元素的個數是否爲0
    3. 迭代器
        * 做用:遍歷集合
        * Iterator是一個接口,其中包含的方法
            boolean hasNest():判斷是否還有元素,一般用做判斷循環退出的條件
            E next():獲取下一個元素。用以對迭代器遍歷的數據進行單個操做
        * 一般操做步驟:
            Iterator it = new Iterator();
            while(it.hasnext()){
                E 變量名 = it.next();
                變量操做語句;
            }

        * 使用迭代器遍歷集合標準代碼:
            Collection<String> c = new ArrayList<String>();
            //添加元素
            
            //遍歷集合
            Iterator it = c.iterator();
            while(it.hasNext()) {
                String str = it.next();
                System.out.println(str);
            }
    4. 加強for循環
        使用起來特別方便
        
        做用: 遍歷集合或者數組
        
        格式:
            for(數組/集合元素的類型 變量名: 數組/集合對象) {
                
            }
        注意:
        加強for循環遍歷集合底層使用的是迭代器
        加強for循環遍歷數組底層使用的是普通for循環
        使用加強for循環只是遍歷集合,若是要對集合的元素的個數進行改變的話,咱們就不能使用加強for循環
    5. 集合的遍歷方式:
                (1)轉數組--> toArray()
                (2)迭代器--> Iterator
                (3)加強for循環-->只能遍歷,不能改變
    
    6. 泛型
        * 概述
        在定義類或者接口或者方法的時候,不能肯定具體的數據類型,而是在使用的時候確認
        * 要求:
        會使用就行,對於泛型類,泛型接口,泛型方法的定義做爲了解,由於開發中通常不會定義泛型類
        
        * 定義泛型類
        public class 類名<T> {
            能夠使用T,把T看作是數據類型就能夠了
        }
        例如:
            public class MyOwnClass<MVC> {
                private MVC mvc;
            
                public MVC getMvc() {
                    return mvc;
                }
            
                public void setMvc(MVC mvc) {
                    this.mvc = mvc;
                }
            }
        而後在main方法中使用時賦予泛型具體的類型:
            MyOwnClass<String> mo = new MyOwnClass<String>();
            mo.setMvc("James");
            String mvp = mo.getMvc();
        
        * 定義泛型方法
        修飾符 <T> 返回值類型 方法名(T t) {
            方法體;
            return 返回值;
        }
        例如:
            public class FanXingMethod {

                public <MVP> void show(MVP mvp){
                    System.out.println(mvp.getClass());
                }
            
                public <MVP> MVP show2(MVP mvp){
                    return mvp;
                }
            }
        而後再main方法中使用泛型方法時賦予其具體的類型:
            public static void main(String[] args) {
                FanXingMethod fx = new FanXingMethod();
                fx.show("aaa");
                fx.show(123);
                fx.show(12.45);
                String bbb = fx.show2("bbb");
                Integer a = fx.show2(123);
                Double b = fx.show2(12.45);
            }
        
        * 定義泛型接口
            public interface 接口名<T> {
                
            }
            
            泛型接口的子實現類:
                帶泛型的
                    public class 類名<T> implements 接口名<T> {
                        
                    }
                不帶泛型的
                    public class 類名 implements 接口名<具體的數據類型> {
                        
                    }
相關文章
相關標籤/搜索