java基础15集合List

Collection  (子类ArrayList)

     

        1:List            

                         a:ArrayList:底层数据结构是数组结构:不安全,高效,查询的速度快  (数组),底层判断元素是否相同依据的是元素的                                     equals方法

                                 无论contains还是remove都会去使用equals判断元素是否相同,

                                 所以在往ArrayList集合存储自定义元素时,最好建立该元素特有的判断对象是否相同的依据,也就是覆盖equals方法。

                        b:Vector:底层数据结构是数组结构   线程安全,

                         c:LinkedList:底层是链表结构。线程不安全的,同时对元素的增删操作效率很高 (链表)

 

              可变长度的数组:

                        ArrayList内部封装了一个默认长度为10的数组

                        当超出长度是,集合内部会自动生成一个新的数组,将原数组中的元素 复制到新数组中,再将新元素添加到新数组,

            新数组到底多长呢?

                      ArrayList:  50%延长

                     Vector   100%延长


     2:Set     

                 a: HashSet

                            底层数据结构是哈希表,

                                   HashSet集合如何保证元素的唯一性呢?

                                   HashSet集合保证元素唯一性,依赖的是元素的hashCode方法和equals方法

                                  当元素的哈希值不同时,元素都有自己的独立位置,不需要再判断元素的equals方法,

                                  当元素的哈希值相同时,这时元素在哈希表中位置相同,这时就需要再判断一次元素的内                                    容是否相同,就需要调用元素的equals方法进行一次比较,如果equals返回是true,那么                                    视为两个元素为重复元素,只存储一个,如果返回是false,那么这两个元素不是重复元                                       素,会存储在同一个哈希值上,(equals方法返回值为true,说明有相同元素,不存储)

                            

                 b: TreeSet

            

              

                 







  1:List(子类ArrayList)该容器的元素是有序的,(存储的顺序和取出的顺序一致)

                                 该集合中的元素都有索引(角标)。该集合可以存储重复的元素,

                     

                    List集合中常见的共性方法。

               1.添加元素  add();

                2.删除元素  remove();

                 3.修改元素  set();

                4.获取元素  get();     indexOf("abc");     subList(2,5);//根据头尾角标获取子列表


           如果迭代器Iterator和集合同时对元素进行操作,会出现异常,所以只能用一种,且                        Iterator,方法较少

           但是List有ListIterator,可以操作元素,

           所以List 在迭代过程中,如果需要增删改查元素 的操作,需要列表迭代器。

            但是注意:该迭代器,只能用于List集合,


      Linkedlist:addFirst();



 2:Set    无序, 不可以重复,set接口的方法和collection中的方法一致

                     set接口取出元素的方法只有迭代器。


       




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值