collection里的List

Java类集实际上去就是java对数据结构的一种实现;---java.util

1. Collection接口(单个对象保存的最顶层父接口)

   Collection接口以及其子接口在每次进行数据结构操作时只能对单个对象进行处理;

   只定义了存储数据的标准,但是无法区分存储类型。

   所以常用的是他的两个子类:ListSet

   public interface Collection<E> extends Iterable<E>

   public Iterator<E> iterator();取得集合的迭代器,在JDK1.5之前是写在Collection接口中

           interface Iterable

        1.1 Collection接口中的核心方法:

              add(T t):向类集中添加元素

              iterator():取得类集的迭代器

   1.2.List接口(允许数据重复)

      在进行单个集合处理时,优先考虑List接口

      List接口中拓展了两个重要方法:get(int index):根据所以下标取得元素;set(int index,E element):根据索引下标更新数据

   ***三个子类使用上没有任何区别;区别:

      {

      1.出现版本:

      ArrayList JDK1.2

      Vector    JDK1.0

      2.调用无参构造初始化策略:

      ArrayList 在构造方法阶段并不初始化对象数组,在第一次添加元素时才初始化对象数组

      Vector    在无参构造执行后将对象数组大小初始化为10

      3.扩容策略

      ArrayList 扩容变为原来的1.5倍

      Vector    扩容为原来的2倍

      4.线程安全性

      ArrayList 异步处理,性能较高,线程不安全

      Vector    同步处理,性能较低(原因,才用在方法上加锁,除了内键锁还可以使用lock),线程安全

      (即使要使用线程安全的List,也不用vector)

      5.遍历

      Vector支持较老的迭代器Enumeration,

      ArrayList不支持

      }

      {

      ArrayList  底层采用数组实现

      LinkedList 底层采用双向链表

      都采用异步实现

      }



  ArrayList

            默认数组长度为10

            private static final int DEFAULT_CAPACITY = 10;

               扩容1.5倍

            2.1.1.无参构造

            2.1.2.有参构造 int定义初始化容量,用户自定义

            2.1.3.有参构造 从某个位置插入某个值

                  接口能保证参数的统一

            List接口想要保存自定义类的对象(containsremove等方法):需要覆写equalshushCode方法

            可以使用concurrent包提供的工具将ArrayList变为线程安全的集合

      重复元素的比较:系统ObjectInteger自动覆写了equalshashCode方法,所以不用重新覆写

            equals不一定比较的都是内容,在Object类里equals是用==实现,覆写后比较的才是内容

            equalshushCode成对存在,所以要一块覆写
           Vector 默认数组长度10

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值