Java ArrayList

package com.collectionDemo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/**
 * ArrayList的使用
 * 存储结构:数组、查找遍历速度快、增删慢
 * 源码分析:
 * (1) 默认容量大小 DEFAULT_CAPACITY = 10
 *      注意:如果没有向集合中添加任何元素,容量为0
 * (2) elementData 用来存放元素的数组
 * (3) size 实际的元素个数
 * (4) add 添加元素
 *       public boolean add(E e) {
 *         ensureCapacityInternal(size + 1);  // Increments modCount!!
 *         elementData[size++] = e;
 *         return true;
 *       }
 *        private static int calculateCapacity(Object[] elementData, int minCapacity) {
 *         if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
 *             return Math.max(DEFAULT_CAPACITY, minCapacity);
 *         }
 *         return minCapacity;
 *       }
 *       private void grow(int minCapacity) {
 *         // overflow-conscious code
 *         int oldCapacity = elementData.length;
 *         int newCapacity = oldCapacity + (oldCapacity >> 1);
 *         if (newCapacity - minCapacity < 0)
 *             newCapacity = minCapacity;
 *         if (newCapacity - MAX_ARRAY_SIZE > 0)
 *             newCapacity = hugeCapacity(minCapacity);
 *         // minCapacity is usually close to size, so this is a win:
 *         elementData = Arrays.copyOf(elementData, newCapacity);
 *     }
 * (5) 创建集合时 默认的容量是0 添加了第一个元素后是10  往后再扩容 每次的扩容是原来的1.5倍
* */
public class ArrayListDemo01 {
    public static void main(String[] args) {
        ArrayList ar1 = new ArrayList();
        Student s1 = new Student("刘德华", 20);
        Student s2 = new Student("郭富城", 22);
        Student s3 = new Student("彭于晏", 15);
        Student s4 = new Student("张梓康", 17);

        // 1. 添加元素
        ar1.add(s1);
        ar1.add(s2);
        ar1.add(s3);
        ar1.add(s4);
        ar1.add(s4);
        System.out.println("元素个数:"+ ar1.size());
        System.out.println(ar1);
        System.out.println("===================================================");
        // 2. 删除元素
        // 通过下表
//        ar1.remove(0);
        // 通过元素  假如有两个相同的元素 remove只会删除前一个
        ar1.remove(s4);
        // 重写equals 方法 则可以使用构造的形式来删除数组元素
//        ar1.remove(new Student("张梓康", 17));
        System.out.println("元素个数:"+ar1.size());
        System.out.println(ar1);
        System.out.println("===================================================");

        // 3. 遍历元素【重点】
        // 3.1 迭代器
        Iterator it = ar1.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("===================================================");

        // 3.2 列表迭代器
        ListIterator lit = ar1.listIterator();
        while(lit.hasNext()){
            System.out.println(lit.next());
        }
        System.out.println("===================================================");
        while (lit.hasPrevious()){
            System.out.println(lit.previous());
        }
        System.out.println("===================================================");

        // 4. 判断元素

        System.out.println(ar1.contains(new Student("张梓康", 17)));
        System.out.println(ar1.isEmpty());
        // 5. 查找元素

        System.out.println(ar1.indexOf(new Student("张梓康", 17)));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值