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

posted @ 2017-07-10 16:43  圆梦程序员  阅读(2845)  评论(0编辑  收藏  举报