关于java的ArrayList类知识点总结

1、ArrayList的概念


Java中的ArrayList是Java集合框架(Java Collections Framework)中的一个非常重要且常用的类,它实现了List接口。ArrayList可以动态地增长和缩减,用于存储一系列的对象。与数组相比,ArrayList提供了更加灵活和强大的功能,比如自动扩容、动态添加和删除元素等。


2、ArrayList的主要特点


  1. 动态数组ArrayList在内部使用动态数组来存储元素。这意味着当添加元素超出当前数组容量时,ArrayList会自动创建一个更大的数组,并将旧数组的元素复制到新数组中,以便继续添加新元素。

  2. 自动扩容ArrayList的默认初始容量是10。但是,当添加的元素数量超过当前容量时,ArrayList会自动扩容,以容纳更多的元素。扩容的大小通常是当前容量的1.5倍(具体实现可能因JVM实现而异)。

  3. 随机访问:由于ArrayList内部是使用数组实现的,所以可以通过索引快速访问任意位置的元素,这使得ArrayList在需要频繁访问元素时非常高效。

  4. 非同步ArrayList不是线程安全的。如果多个线程同时访问一个ArrayList实例,并且至少有一个线程从结构上修改了列表(即添加或删除元素),那么它必须保持外部同步。


3、ArrayList的构造方法


构造方法
new  ArrayList()创建一个容量为0的空数组
new ArrayList(int initialCapacity)创建一个长度为Capacity的集合
new ArrayList(Collection<? extendsE> c)构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。

注意:

早期版本(如JDK 1.6及之前)

在早期的Java版本中,如JDK 1.6及之前,使用ArrayList的空参构造(即new ArrayList())时,确实会默认创建一个容量为10的列表。这是通过在构造方法中直接初始化一个长度为10的数组来实现的。

后续版本(如JDK 1.7及之后)

然而,从JDK 1.7开始,Java对ArrayList的实现进行了优化,特别是在空参构造的初始容量上。在JDK 1.7及之后的版本中,使用ArrayList的空参构造时,并不会立即创建一个容量为10的数组。相反,它会使用一个空的数组(长度为0)作为初始的elementData数组。这个空数组是通过private static final Object[] EMPTY_ELEMENTDATA = {}定义的。这样做的目的是为了节省空间,因为只有在真正需要添加元素时,才会进行扩容操作。


4、ArrayList的方法


方法名作用
public boolean add(E e)添加新元素到集合的末尾
public boolean remove(E e)删除指定元素
public E remove(int index)删除索引处的元素,并返回元素
public E set(int index,E element)修改索引元素的信息,并返回元素
public E get(int index)得到索引处的元素
public int size()返回集合中的元素的个数
public void add(int index,E element)在此集合中的指定位置插入指定的元素


 (1)添加元素
ArrayList<user> myArrayList = new ArrayList<>();

 user b1 = new user("ooop","wad8ywd","dhaiw");
 user b2 = new user("ooop1","wad8ywd1","dhaiw1");
 user b3 = new user("ooop2","wad8ywd2","dha2iw");

//直接添加元素

        a.add(b1);
        a.add(b2);
        a.add(b3);

(2)添加元素到指定位置
ArrayList<E> myArrayList = new ArrayList<>();


myArrayList.add(int i,E c);

  注释:int i 是集合的指定位置下标,E c是集合的数据类型


 (3)删除指定元素

ArrayList<E> myArrayList = new ArrayList<>();


//添加新元素
myArrayList.add(E c1);
myArrayList.add(E c2);
myArrayList.add(E c3);

//删除元素

myArrayList.remove(c1);


//删除指定元素


myArrayList.remove(1);

 (4)得到集合元素个数

ArrayList<E> myArrayList = new ArrayList<>();


//添加新元素
myArrayList.add(E c1);
myArrayList.add(E c2);
myArrayList.add(E c3);


//得到集合元素个数

myArrayList.size();
//结果为3;


 (5)修改元素信息
ArrayList<E> myArrayList = new ArrayList<>();


//添加新元素
myArrayList.add(E c1);
myArrayList.add(E c2);
myArrayList.add(E c3);


//修改元素

myArrayList.set(int i,E c4);

注释:int i是集合的索引,E c4是新的元素信息

(6)根据索引得到集合元素信息
ArrayList<E> myArrayList = new ArrayList<>();


//添加新元素
myArrayList.add(E c1);
myArrayList.add(E c2);
myArrayList.add(E c3);


//得到元素信息

myArrayList.get(0);

注释:因为E是引用数据类型,所有get得到的结果是c1的地址值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值