JAVA学习笔记(复习)-----7、 JAVA SE 核心 I(2)

来源:互联网 发布:ip和域名登录 编辑:程序博客网 时间:2024/05/22 06:04

本章内容:集合Collection和Map

一、Collection

            collection:是一个接口,定义了集合相关的抽象方法,

            collection:下面有两大接口:List和Set

            集合中可以保存任意类型的实例(集合中每个元素是任意类型的实例),但一般而言,一个集合中的元素类型应该是一致的,否则容易造成混乱。

           List:元素[有序]且[可以重复添加]

       Set:元素[无序]且[不可以重复添加]

         1、线性表ArrayList:

                ArrayList:是List的一个实现类

                ArrayList:使用Object[]实现保存元素

                ArrayList:Object[]+线性表操作(增删查改)

          向集合末尾追加元素 add()
          向集合制定位置添加元素也是add(index,object)
          从集合中获取元素用get()
          ArrayList重写了toString()方法,输出格式:[元素0.toString(),元素1.toString(),元素2.toString()]
          查看一个是否在集合中,arrayList.contains(object);此方法会将object与集合arraylist中的每个元素进行equals()比较,若有一项为true则返回true,否则返回false。
          删除集合的元素(remove(object))

                remove(Object o)删除制定 o,此方法是将 o 与集合所有元素进行equals()相比,返回true则删除,否则返回false

                remove(int index)删除指定下标的元素(返回被删除的对象)

             size() 返回集合中的元素数量
             set() 修改元素

                  修改元素不是将元素内容改变,而是当前的位置元素改变,所以集合的修改就是替换

                  set(index,Object o)

                  此方法返回被替换的元素

            addAll()添加(合集)

                   将另一个集合的所有元素也添加到集合中

           removeAll()(差集)

                    从一个集合中删除与另一个集合包含的元素

           retainsAll() (交集)      

                    集合中保存另一个集合也包含的元素

           空集(不是null)

                   对象.isEmpty()

           清空集合

                    对象.clear()


          Vector:使用方法与ArrayList一样,Vector也实现了List接口,ArrayList在Java1.2后出现,ArrayList线程非安全,Vector线程安全


          2、LinkedList

                     LinkedList:链表(采用双向循环链表实现)

                     API用法基本与ArrayList一致

                     另外:

                              addFirst() =>add(0,object) 向第一个位置末添加元素

                              addLast() =>add(size,object)向末尾添加元素

                              removeFirst()删除第一个元素

                              removeLast()删除最后一个元素

                     说明:

                              增删时效率比ArrayList高,查询时比ArrayList低

             

                补充:

                   java1.5之后增加了泛型,在集合中使用泛型:可以约束集合中的元素类型。

                   好处:1、向集合中存放元素时,类型统一;

                              2、从集合中取元素时不需要再造型   



二、散列表Map

                容量:散列表中散列数组的大小
                散列运算:key的hashcode值进行运算
                散列桶:散列值相同的元素的线性集合
                加载因子:散列数组的加载率,一般要求小于75%,元素数目 / 散列数组的大小=加载因子
                散列查找:根据key值进行hashcode值进行计算,计算散列表下标从而找到对应元素

      1、hashMap

                      hashMap是以key-value形成保存数据的
                      key可以是任意对象,value可以是任意对象
                      key-value成对保存,在hashMapzhon个中以Entry保存
                      key不可以重复 ,若相同,存放value,视为替换操作,根据key进行散列计算(计算key的hashcode值得到散列数组的下标)元素按照散列值进行排序(对我们来说是透明的)



      



0 0