zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    深入理解C++的动态绑定和静态绑定
    【转载】“惊群”,看看nginx是怎么解决它的
    352. Data Stream as Disjoint Intervals
    lambda
    auto
    sizeof(类)
    private是自己私有的,protected是可以让孩子知道的,public是公开的
    【转载】C++ typedef用法小结
    string char * const char *之间的互相转换
    【转载】Web Service 的工作原理
  • 原文地址:https://www.cnblogs.com/zhuhuibiao/p/9313885.html
Copyright © 2011-2022 走看看