array,集合(collection),集合(list)的區別


集合只能存儲簡單數據類型,例如:List<Integer> = new ArrayList<>();這里存儲的也是引用類型

1--數組

1:對象數組(掌握)  
    (1)數組既可以存儲基本數據類型,也可以存儲引用類型。它存儲引用類型的時候的數組就叫對象數組。  
    (2)案例:  
        用數組存儲5個學生對象,並遍歷數組。  

2--一般的集合(collection)

Collection  
            |--List  
                |--ArrayList  
                |--Vector  
                |--LinkedList  
            |--Set  
                |--HashSet  
                |--TreeSet

集合和數組的區別:

集合和數組的區別?  
        A:長度區別  
            數組固定  
            集合可變  
        B:內容區別  
            數組可以是基本類型,也可以是引用類型  
            集合只能是引用類型  
        C:元素內容  
            數組只能存儲同一種類型  
            集合可以存儲不同類型(其實集合一般存儲的也是同一種類型)  

用法:

 
         

Collection的功能概述
A:添加功能
boolean add(Object object):添加一個元素。
boolean addAll(Collection c):添加一個集合的元素。
B:刪除功能
vouid clear():移除所有元素。
boolean remove(Object o):移除一個元素。
boolean removeAll(Collection c):移除一個集合的元素。(是一個還是所有)
C:判斷功能
boolean contains(Object o):判斷集合中是否包含指定的元素。
boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素。(是一個還是所有)
boolean isEmpty():判斷集合是否為空。
D:獲取功能
Iterator<E> iterator():(重點)
E:長度功能
int size():元素的個數。
面試題:數組有沒有length()方法呢?字符串有沒有length()方法呢?集合有沒有length()方法呢?
沒有,有,沒有
F:交集(了解)
boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回boolean又是什么意思呢?
G:把集合轉數組(了解)
Object[] toArray():

3--list

List集合的特有遍歷功能  
        A:由size()和get()結合。  
        B:代碼演示  
                    //創建集合對象  
                    List list = new ArrayList();  
                      
                    //創建並添加元素  
                    list.add("hello");  
                    list.add("world");  
                    list.add("java");  
                      
                    //遍歷集合  
                    Iterator it = list.iterator();  
                    while(it.hasNext()) {  
                        String s =(String) it.next();  
                        System.out.println(s);  
                    }  
                    System.out.println("----------");  
                      
                    for(int x=0; x<list.size(); x++) {  
                        String s =(String) list.get(x);  
                        System.out.println(s);  
                    }  
    (4)列表迭代器的特有功能;(了解)  
        可以逆向遍歷,但是要先正向遍歷,所以無意義,基本不使用。  
    (5)並發修改異常  
        A:出現的現象  
            迭代器遍歷集合,集合修改集合元素  
        B:原因  
            迭代器是依賴於集合的,而集合的改變迭代器並不知道。  
        C:解決方案  
            a:迭代器遍歷,迭代器修改(ListIterator)  
                元素添加在剛才迭代的位置  
            b:集合遍歷,集合修改(size()和get())  
                元素添加在集合的末尾  
    
    (6)常見數據結構  
        A:棧 先進后出  
        B:隊列 先進先出  
        C:數組 查詢快,增刪慢  
        D:鏈表 查詢慢,增刪快  
    (7)List的子類特點(面試題)  
        ArrayList  
            底層數據結構是數組,查詢快,增刪慢。  
            線程不安全,效率高。  
        Vector  
            底層數據結構是數組,查詢快,增刪慢。  
            線程安全,效率低。  
        LinkedList  
            底層數據結構是鏈表,查詢慢,增刪快。  
            線程不安全,效率高。  
              
        到底使用誰呢?看需求?  
        分析:  
            要安全嗎?  
                要:Vector(即使要,也不使用這個,后面再說)  
                不要:ArrayList或者LinkedList  
                    查詢多;ArrayList  
                    增刪多:LinkedList  
                      
        什么都不知道,就用ArrayList。  
    (8)List集合的案例(遍歷方式 迭代器和普通for)  
        A:存儲字符串並遍歷  
        B:存儲自定義對象並遍歷  

 

 

引用:http://blog.csdn.net/l1585931143/article/details/53749787


免責聲明!

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



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