1.集合:

        1.1相比数组的优势:

               a.可以存储任意类型的对象数据,数组只能存储一种类型的变量

               b.集合的长度会发生变化,数组不会

        1.2集合概述

----|Collection: 单列集合

-----------|List: 有存储顺序, 可重复

-----------|ArrayList: 数组实现, 查找快, 增删慢

                               由于是数组实现, 在增和删的时候会牵扯到数组

                               增容, 以及拷贝元素. 所以慢。数组是可以直接

                               按索引查找, 所以查找时较快

-----------|LinkedList: 链表实现, 增删快, 查找慢

                               由于链表实现, 增加时只要让前一个元素记住自

                               己就可以, 删除时让前一个元素记住后一个元

                               素, 后一个元素记住前一个元素. 这样的增删效

                               率较高但查询时需要一个一个的遍历, 所以效率

                               较低

                               同样实现了Queue接口,就能用到类似于队列的方法了

                               1:栈 (1.6) : 主要是用于实现堆栈数据结构的存储方式。
                                               先进后出
                                                push()
                                                pop()
                               2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
                                               先进先出
                                                offer()
                                                poll()

-----------|Vector: 和ArrayList原理相同, 但线程安全, 效率略低

                            和ArrayList实现方式相同, 但考虑了线程安全问

                            题, 所以效率略低

-----------|Set: 无存储顺序, 不可重复

-----------|HashSet

-----------|TreeSet

-----------|LinkedHashSet

-----------| Map: 键值对

-----------|HashMap

-----------|TreeMap

-----------|HashTable

-----------|LinkedHashMap

为什么出现这么多集合容器,因为每一个容器对数据的存储方式不同,这种存储方式称之为数据结构(data structure)

注意 集合和数组中存放的都是对象的引用。

有序: 集合的有序不是指自然顺序,而是指添加进去的顺序与元素出来的顺序是一致的。

        1.3什么时候用什么类型的集合

Collection

我们需要保存若干个对象的时候使用集合。

List

如果我们需要保留存储顺序, 并且保留重复元素, 使用List.

如果查询较多, 那么使用ArrayList

如果存取较多, 那么使用LinkedList

如果需要线程安全, 那么使用Vector

Set

如果我们不需要保留存储顺序, 并且需要去掉重复元素, 使用Set.

如果我们需要将元素排序, 那么使用TreeSet

如果我们不需要排序, 使用HashSet, HashSet比

TreeSet效率高.

如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet

        1.5Collection接口中的共性方法:   

               a.  增加
                  add(E e)  添加成功返回true,添加 失败返回false.
                  addAll(Collection c)  把一个集合 的元素添加到另外一个集合中去。
               b. 删除
                  clear()
                  remove(Object o)
                  removeAll(Collection  c)
                  retainAll(Collection  c)
              c. 查看
                  size()

              d.  判断
                  isEmpty()
                  contains(Object o)
                  containsAll(Collection<?> c)
              e. 迭代
                  toArray()
                  iterator()

        2.List接口中特有方法:

              操作的方法都含有index
              a.添加
                 add(int index, E element)
                 addAll(int index, Collection<? extends E> c)
              b.获取:
                 get(int index)
                 indexOf(Object o)
                 lastIndexOf(Object o)
                 subList(int fromIndex, int toIndex)
             c.修改:
                 set(int index, E element)

             d.迭代
                 listIterator()

增加

public static void main(String[] args) {
        Collection list = new ArrayList();
        // 增加:add() 将指定对象存储到容器中
        list.add("计算机网络");
        list.add("现代操作系统");
        list.add("java编程思想");
        System.out.println(list);
        // [计算机网络, 现代操作系统, java编程思想]
        
        // 增加2 将list容器元素添加到list2容器中
        Collection list2 = new ArrayList();
        list2.add("java核心技术");
        list2.addAll(list);
        list2.add("java语言程序设计");
        System.out.println(list2);
        // [java核心技术, 计算机网络, 现代操作系统, java编程思想, java语言程序设计]
    }
View Code

相关文章: