java面向对象中的集合

1.学习集合的原因?

   A.数组是面向过程的,集合是面向对象的。

   B。集合是类,具备类的封装,继承,多态。。。超强功能。

   C。数组是固定长度,集合是可变长度

   D。数组没办法获得真实的元素个数;集合可以。

   E。数组只有一种固定的存值方法(顺序结构存值);集合具有多种方式,适合于多种场合。


2.集合的家庭成员:

   (第一块:)
               Collection  【无序,不唯一】      Map【key  , value】
          【无序,唯一】【无序,不唯一】

   list 【有序,不唯一】                        set【无序,唯一】  


ArrayList     LinkedList    Vector              HashSet     TreeSet  HashMap
   |     |         |           |     |
【顺序存储】 【链表存储】         【hash表】  【二叉树】      【哈希表+键值对】


3.介绍ArrayList:

  存值方式: 顺序结构存储。

  使用场合: 遍历和随机访问。

  常用方法:

      增加:add();addAll(Collection);
    
      删除:remove(Object或者下标);removeAll(Collection);

      查找:contains(Object);containsAll(Collection);size();get(下标);

      迭代:Iterater: 

           使用:
  Iterator iter =list.iterator();
  while(iter.hasNext()){
   System.out.println(iter.next());
  }

4.介绍Vector 和 ArrayList的区别:(了解)

  1.相同点:原理相同,底层代码相同,方法相同

  2.不同:Vector  线程安全的;每次增长1倍;老版本jdk提供操作集合的接口

         ArrayList 效率高,线程不安全;每次增长0.5倍;ArrayList是新版本提供集合的接口。

5.介绍LinkedList:


存值方式:链表结构

使用场合:删除和修改

   方法:

      增加:add();addAll();addFirst();addLast();
    
      删除:remove();clear();removeAll();
            removeFirst();removeLast()

      查找:contains("北京");containsAll(list1);size();get();
            getFirst();getLast();

      迭代:Iterater:   
        
  对比LinkedList 和ArrayList的区别:

      1.存值方式不一样:顺序结构,链表结构

      2.使用场合不一样:遍历和随机访问;删除和修改


6. 介绍泛型:

    学习泛型的原因?
    
       保证集合在【编译期】存值时没问题;那么运行期取值也没问题。

    作用: 在【编译期】,控制接收元素的类型。
      
    泛型用在集合: 

   LinkedList<Integer> link = new LinkedList<Integer>();

   link.addFirst(567);
          link.add(12);
          link.add(111);
   System.out.println(link);
   
 Iterator<Integer> list=link.iterator();
 while(list.hasNext()){
  Integer i=list.next();
  System.out.println(i+1);
 }

7.集合的第二块:

         Map  (键 值对,key无序唯一;value 无序 不唯一)

    HashMap      TreeMAP       HashTAble


(7.1)介绍:HashMap   

        存值方式: hash表存储键值对。

        HashMap  vs  Hashtable (了解)

        1. Hashtable 老jdk版本;HashMap  新版本

        2. Hashtable 线程安全; HashMap  效率高,线程不安全。

        3. HashMap  实现Map接口 ;Hashtable 继承 Dictionary。
       
 4.hashMap允许空值,hashtable不允许空值

        相同:原理,算法,存值方式相同。

   方法:

       增加: put(011, "北京");putAll(map1);

       删除:remove(key); ---根据key ,去删除 value

       查询:get(key)--根据key ,去删除 value。
      keySet()---返回键的集合
      values()---返回值的集合
      containsKey(key)---如果存在由指定的键映射的“键-值对”,返回true

posted @ 2018-07-15 16:17  后山人  阅读(218)  评论(0编辑  收藏  举报