黑马程序员——java基础--集合

来源:互联网 发布:淘宝差评师曝光网 编辑:程序博客网 时间:2024/06/08 15:36


-----------android培训java培训java学习型技术博客、期待与您交流!------------


   一、集合

            集合其实也是一种容器。和数组一样是用来存储多个数据的容器

       对比着数组来讲:

         1.集合中的大小不固定。随着向集合中存储的元素增加,集合大小也随着增加

         2.集合中可以存储引用类型的任何数据,可以存储不同类型的引用数据

         3.集合除了可以通过角标操作外,还具有其它操作元素的方式

 

  二、集合框架

          集合是用来存储元素的。在使用集合存储元素时,会存在不同的存储需求,

      在存储时不允许存储重复元素、在存储时要求元素按照某种规则进行排序。而针

      对于不同的存储需求,就需要用来解决不同需求集合类。在这些不同集合类中,

      是具有共性功能:存储功能、删除功能等。对于具有的共性内容,就会向上抽取,

      重新封装为类,经过不断的向上抽取封装,从而就形成集合框架体系结构,简称

      为集合框架。

        

    三、Collection接口

           1、Collection集合中常用方法

         添加方法:boolean  add(Object obj)

                 把指定的obj对象,存储到Collection集合中,存储成功则返回true

         删除方法:boolean  remove(Object obj)

                 把指定的obj对象,从Collection集合中删除,删除成功则返回true

         修改方法: 注意:在Collection集合中没有修改方法

         获取方法: 在Collection集合中直接从集合中获取元素的方法。

                 想要获取Collection集合中的元素,需要对Collection集合进行

                 遍历,通过遍历获取集合中元素

         其它方法:

             void  clear()   用来清空集合中所存储的全部元素

             boolean contains(Object obj) 判断集合中是否包含指定的元素obj

             boolean isEmpty() 判断是集合中是否有存储元素,没有任何则返回true

             int   size()  获取集合中所存储元素的个数

             Object[] toArray()  把集合对象转为数组


             2、 Collection集合中带All方法

         添加方法: boolean addAll(Collection c)

                 把指定的集合c中所有的元素添加到集合对象中

         删除方法: boolean  removeAll(Collection c)

                 从集合对象中,删除和指定的集合c中相同的元素

         判断方法: boolean containsAll(Collection c)

                 判断集合对象中是否包含所指定的集合对象c中的所有元素


   四、集合的遍历——Iterator迭代器

          Iterator接口中的方法

            boolean hasNext() 判断集合中有没有元素还可以继续迭代

            Object  next()     获取集合中的正在迭代的元素


         使用Collection接口中的方法,可以获取到迭代器对象

            iterator()

        

         例如:获取coll集合中的所有元素

              Collection coll = new ArrList();

              Iterator it = coll.itertor();

              while(it.hasNest()){

                 System.out.println(it.next());

              }


    五、List集合

          在Collection集合下,存在两个子集合对象:ListSet

                    

          1、List集合的特点:

              a. List集合在存取元素上是有序的

              b.List集合具有角标。可以利用角标精确访问集合中的每一个元素

              c.List集合允许存储重复的元素

              d.List集合允许存储多个null元素


           2、List集合的方法:

                List(接口)集合继承了Collection(接口)集合,所以就具备使用

               Collection集合中的相关方法。而List集合本身的特有方法都是

                围绕着角标来设计。

                   

             List集合的特有方法:

              添加元素方法:

                void add(intindex,Object obj)

                   List集合中指定的index角标位置上添加obj元素

                boolea addAll(int index,Collection c)

                  List集合中指定的index角标位置上添加指定的集合c中所有的元素

              删除元素方法:Object remove(intindex)

                 从List集合中删除指定角标index位置上的元素。并返回被删除的元素

              修改元素方法:Object set(intindex,Object obj)

                 修改List集合中指定的index角标位置上元素修改为obj元素,并返回旧的元素

              获取元素方法:Object get(intindex)

                  获取集合中指定角标位置index上的元素


            其它方法:

              int indexOf(Object obj)

                    查找集合中指定的obj元素第一次出现位置。没有找到则返回-1

               int lastIndexOf(Object obj)最后一次出现位置

               List subList(int start, int end)

                    从集合的start角标开始截取end角标结束,返回截取到的子集

                     合对象(包头不包尾)


         3、List集合的遍历

               a.List集合继承了Collection,同样也具备Iterator迭代方式

               b.List集合具有角标,可以使用传统的遍历方法,来遍历List

               c.List集合具有自己专属的迭代器对象:ListIterator迭代器

            

               ListIterator迭代器对象中的方法

                 void add() 将制定元素插入列表中

                 next()  返回列表中的下一个元素

                 void remove()  从列表中移除元素

                 void set() 用指定元素替换


           4、ArrayList集合

                 实现了List集合,具备List集合的特点,

                 底层使用可变数组结构来存储元素

                 查询遍历元素的效率比较高,增删元素的效率比较低。

     

            5、LinkedList集合

                  实现了List集合,具备List集合的特点

                  底层使用链表结构(链表的特点:有头有尾)

                  查询遍历元素效率比较低,增删元素的效率比较高


               LinkedList集合的特有方法:

                 链表结构的特点,就是有头有尾,而LinkedList集合特有的方法都

                 是围绕头和尾设计的。

                    void addFirst(Object obj)

                       把指定的元素添加到集合的头部位置

                    void addLast(Object  obj)

                       把指定的元素obj添加到集合的尾部位置

                    Object removeFirst() 

                        把集合中头部位置上的元素删除,并返回被删除的元素

                    Object removeLast() 

                        把集合中尾部位置上的元素删除,并返回被删除的元素

                    Object getFirst()  

                        获取集合头部位置上的元素

                    Object getLast()  

                        获取集合尾部位置上的元素


    六、Set集合

           不允许存储重复元素、

           最多只能存储一个null元素,

           没有角标、只能通过迭代器方式来获取集合中的元素

                       

            Set集合下的子类:

               HashSet集合

              LinkedHashSet集合

              TreeSet集合

          


           6.1 HashSet

                特点:

                  a.底层使用哈希表结构

                  b.存取元素无序

                  c.实现Set接口,具备Set集合的相关特点:不允许存储重复元素、

                    最多只能存储一个null

                  d.查询和添加不重复元素的效率比较高(比可变数组都高)

 

            6.2 LinkedHashSet(HashSet集合类下的子类)

                  特点:

                    a.底层使用链表+哈希表结构

                    b.增删元素效率高、查询和添加不重复元素效率高

                    c.存取元素有序


             6.3 TreeSet

                    特点:

                      a.不允许有重复元素、只能有一个null,没有角标

                      b.底层使用二叉树结构

                      c.存储的元素会根据指定的规则自动进行排序


                   排序的方式有两种:

                     自然排序:

                         所存储的元素自身必须实现Comparable接口,并重写comparaTo方法

                     比较器排序(Comparator)

                         也称为强制排序。存储的元素不需要具备任何排序功能在创

                        TreeSet集合时,给予集合对象赋一个比较器


       七、Map集合

            7.1特点:

              a.Map集合中一次可以存储两个对象:键、值对象

              b.Map集合在存储键时,不允许有重复的键对象元素

              c.Map集合中的键只能对应一个值(键值对应)

              d.Map集合没有角标,并且Map集合不具备Iterator迭代器


             7.2Map集合中的常用方法

                添加方法: Value put(K key , V value)

                    在使用put方法存储元素时,会先拿要存储的key,去Map集合中遍历

                    查找,查找是否有相同的key已经存在。如果有相同的key存在:则会

                    把要存储value对象覆盖到原有的value上,并返回旧的value对象

                    如果没有相同key存在:则会把要存储key-value对象一起存储

                    到Map集合中,并返null

                删除方法:Value remove(Object key)

                    根据给定的keyMap集合中删除对应的keyvalue两个元素。如果

                    有给定key元素存在,则删除成功,并返回被删除的value对象。

                    如果没有给定key元素存在,则删除失败,并返回null

                修改方法:Map集合中的修改方法和添加方法都是put方法

                获取方法:Value  get(Objectkey)    

                    根据key获取Map集合中对应的value对象(返回Value对象)如果Map

                    集合中没有指定的key元素存在,则返回null


                 keySet()方法  获取Map集合中的所有Key对象

                 entrySet()  获取集合的映射关系

                     Map集合中存储的keyvalue的对应关系(映射关系)

                     映射关系:Key对应着一个Value

                     映射关系类型:Map.Entry

                  values()   用来获取Map集合中所有的Value对象







0 0
原创粉丝点击