Java类ArrayList常用API详解

ArrayList - 测试类

ArrayList常用API补充

package ArrayList_UtilityClass;

import java.util.ArrayList;

/**
 * ArrayList测试类
 *
 * 集合只能存储引用数据类型,属于顺序结构,其特点是查询快,增删慢,线程不安全但效率高
 *
 * ArrayList类常用方法
 *
 * 快捷键生成变量接收值的三种方式:alt + enter 或者 ctrl + alt + v 或者 代码.var + enter
 *
 * 快捷键输出某变量或Object的值:代码.sout + enter
 *
 * 代码格式标准化:ctrl + alt + L
 *
 * 快捷键导入需要的包:alt + shift + enter
 */
public class ArrayListTest {
    public static void main(String[] args) {

        // 实例化工具详解类
        ExplainArrayListAPI eal = new ExplainArrayListAPI();

        ArrayList arrList = new ArrayList();
        // 将指定元素添加到此列表的末尾
        arrList.add("This is a ArrayList");
        arrList.add("A");
        arrList.add("B");
        arrList.add("D");
        System.out.println("当前列表元素:" + arrList.toString());

        System.out.println("--------------------------------------------------");

        // 将指定元素插入到列表中的指定位置(位置从1开始,下标从0开始)
        arrList.add(3, "C");
        System.out.println("在列表的 3 位置后插入元素C:" + arrList.toString());
        System.out.println("ArrayList的下标从 0 开始,列表的第 0 个元素为:" + arrList.get(0));

        System.out.println("--------------------------------------------------");

        // 将另一个集合(列表)中的所有元素添加至当前列表
        ArrayList numList = new ArrayList();
        numList.add("10086"); // 中国移动客服电话
        numList.add("10010"); // 中国联通客服电话
        numList.add("10000"); // 中国电信客服电话
        arrList.addAll(numList);
        System.out.println("(A - 末尾)添加新元素后的当前列表元素:" + arrList.toString());

        // 将另一个集合(列表)中的所有元素添加至当前列表的指定位置
        arrList.addAll(0, numList);
        System.out.println("(B - 开头)添加新元素后的当前列表元素:" + arrList.toString());

        System.out.println("--------------------------------------------------");

        // 返回当前列表实例的浅表副本(浅克隆)
        ArrayList cloneList = (ArrayList) arrList.clone();
        System.out.println("列表对象浅克隆:" + cloneList.toString());
        String test = cloneList.get(0); // 获取列表中的第0个元素
        test.concat("abc");
        System.out.println("第 0 个元素:" + test + "合并 abc 后的结果为:" + cloneList.get(0));

        System.out.println("\n列表元素深克隆:");
        eal.ExplainDeepClone();

        System.out.println("--------------------------------------------------");

        // 判断列表中是否包含某个值
        System.out.println("当前列表是否包含10086:" + arrList.contains("10086"));

        System.out.println("--------------------------------------------------");

        // 列表扩容
        eal.ExplainEnsureCapacity();

        System.out.println("--------------------------------------------------");

        // 获取列表中指定位置的值
        String statement = arrList.get(3);
        System.out.println("列表 3 下标处的元素为:" + statement);

        System.out.println("--------------------------------------------------");

        // 返回列表中首次出现指定元素的下标,未找到则返回-1
        int indexA = arrList.indexOf("A");
        System.out.println("元素 A 在列表中的下标为(indexOf):" + indexA);
        // 返回列表中最后一次出现指定元素的下标,未找到则返回-1
        int index_6 = arrList.lastIndexOf("10086");
        System.out.println("元素 10086 在列表中的下标为(lastIndexOf):" + index_6);

        System.out.println("--------------------------------------------------");

        // 判断列表是否为空
        boolean emptyFlag = arrList.isEmpty();
        System.out.println("列表是否为空(true - 空;false - 非空):" + emptyFlag);

        System.out.println("--------------------------------------------------");

        // 删除列表中指定下标处的元素
        String remove_3 = arrList.remove(3);
        System.out.println("已删除列表中 3 下标处的元素 - " + remove_3);
        // 删除列表中首次出现的某个元素
        boolean removeFlag = arrList.remove("10086");
        System.out.println("删除列表中首次出现某个元素的结果:" + removeFlag);
        eal.ListElementPresentation(arrList);

        // 范围内元素删除(反射时可用)

        // 删除集合中的所有元素
        boolean removeAllFlag = arrList.removeAll(arrList);
        System.out.println("删除列表中所有元素的执行结果:" + removeAllFlag);
        eal.ListElementPresentation(arrList);

        System.out.println("--------------------------------------------------");

        // 用指定元素代替指定位置上的元素
        arrList.add("A");
        arrList.add("B");
        arrList.add("C");
        arrList.add("D");
        arrList.add("E");
        eal.ListElementPresentation(arrList);
        arrList.set(2, "S"); // 将下标为2的值替换成S
        System.out.println("(重新)设置列表 2 下标处元素的值:");
        eal.ListElementPresentation(arrList);

        System.out.println("--------------------------------------------------");

        // 获取此列表的长度(规格)
        System.out.println("当前列表的长度为:" + arrList.size());

        System.out.println("--------------------------------------------------");

        // 将列表中的元素存入数组
        Object[] objArr = arrList.toArray();
        eal.ArrayElementTraversal(objArr);

        System.out.println("--------------------------------------------------");

        // 将列表实例的容量调整为列表的当前大小
        System.out.println("将列表实例的容量调整为列表的当前大小:");
        arrList.trimToSize();
        eal.ListElementPresentation(arrList);

    }
}

ArrayList - 测试类方法封装

package JavaCommonUtilityClasses;

import JavaCommonUtilityClasses.domain.Singer;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 详解Java工具类ArrayList常用API
 */
public class ExplainArrayListAPI {

    /**
     * 数组元素遍历
     *
     * @param obj
     */
    public void ArrayElementTraversal(Object[] obj) {
        System.out.print("当前数组元素:");
        for (int i = 0; i < obj.length; i++) {
            System.out.print(obj[i] + "    ");
        }
        System.out.println();
    } // ArrayElementTraversal结束

    /**
     * 列表元素展示
     *
     * @param collection
     */
    public void ListElementPresentation(Collection collection) {
        if (collection.size() > 0) {
            System.out.print("列表元素:");
            for (Object obj : collection) {
                System.out.print(obj + "    ");
            }
            System.out.println();
        } else {
            System.out.println("提示:当前集合中无任何元素!");
        }
    } // ListElementPresentation方法结束

    /**
     * 详解列表元素扩容 - void ensureCapacity(int minCapacity)
     */
    public void ExplainEnsureCapacity() {
        ArrayList secList = new ArrayList();
//        final int N = 10000000;
        final int N = 100000;
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < N; i++) {
            secList.add(i);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("未使用ensureCapacity()对列表进行扩容前的时间耗费:" + (endTime - startTime));

        secList = new ArrayList();
        long _startTime = System.currentTimeMillis();
        secList.ensureCapacity(N);
        for (int i = 0; i < N; i++) {
            secList.add(i);
        }
        long _endTime = System.currentTimeMillis();
        System.out.println("使用ensureCapacity()对列表进行扩容后的时间耗费:" + (_endTime - _startTime));
    } // ExplainEnsureCapacity方法结束

    /**
     * 详解列表元素深克隆
     */
    public void ExplainDeepClone() {
        // 创建对象复制模板
        ArrayList singerList = new ArrayList();
        singerList.add(new Singer("李荣浩", '男', 35));
        singerList.add(new Singer("杨丞琳", '女', 36));
        System.out.println("原列表中的元素:");
        for (Singer serItem : singerList) {
            System.out.println(serItem);
        }

        // 创建深克隆列表
        ArrayList cloneList = new ArrayList();
        Iterator items = singerList.iterator();
        while (items.hasNext()) {
            Singer ser = items.next();
            Singer singer = new Singer(ser.getName(), ser.getGender(), ser.getAge());
            cloneList.add(singer);
        }
        // 获取克隆列表中的第二个元素并更改其相关的值
        Singer testSinger = cloneList.get(1);
        testSinger.setName("邢晗铭");
        testSinger.setAge(19);

        System.out.println("经深克隆后列表中的元素:");
        for (Singer cloneItem : cloneList) {
            System.out.println(cloneItem);
        }
    } // ExplainDeepClone方法结束

}
 
  

ArrayList - 方法封装所需的实体类

package JavaCommonUtilityClasses.domain;

/**
 * 方法封装所需的Singer实体类
 */
public class Singer {

    private String name;
    private char gender;
    private int age;

    public Singer() {
    }

    public Singer(String name, char gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", gender=" + gender +
                ", age=" + age +
                '}';
    }

}

运行示范

当前列表元素:[This is a ArrayList, A, B, D]
--------------------------------------------------
在列表的 3 位置后插入元素C:[This is a ArrayList, A, B, C, D]
ArrayList的下标从 0 开始,列表的第 0 个元素为:This is a ArrayList
--------------------------------------------------
(A - 末尾)添加新元素后的当前列表元素:[This is a ArrayList, A, B, C, D, 10086, 10010, 10000]
(B - 开头)添加新元素后的当前列表元素:[10086, 10010, 10000, This is a ArrayList, A, B, C, D, 10086, 10010, 10000]
--------------------------------------------------
列表对象浅克隆:[10086, 10010, 10000, This is a ArrayList, A, B, C, D, 10086, 10010, 10000]
第 0 个元素:10086合并 abc 后的结果为:10086

列表元素深克隆:
原列表中的元素:
Student{name='李荣浩', gender=男, age=35}
Student{name='杨丞琳', gender=女, age=36}
经深克隆后列表中的元素:
Student{name='李荣浩', gender=男, age=35}
Student{name='邢晗铭', gender=女, age=19}
--------------------------------------------------
当前列表是否包含10086:true
--------------------------------------------------
未使用ensureCapacity()对列表进行扩容前的时间耗费:5
使用ensureCapacity()对列表进行扩容后的时间耗费:2
--------------------------------------------------
列表 3 下标处的元素为:This is a ArrayList
--------------------------------------------------
元素 A 在列表中的下标为(indexOf):4
元素 10086 在列表中的下标为(lastIndexOf):8
--------------------------------------------------
列表是否为空(true - 空;false - 非空):false
--------------------------------------------------
已删除列表中 3 下标处的元素 - This is a ArrayList
删除列表中首次出现某个元素的结果:true
列表元素:10010    10000    A    B    C    D    10086    10010    10000    
删除列表中所有元素的执行结果:true
提示:当前集合中无任何元素!
--------------------------------------------------
列表元素:A    B    C    D    E    
(重新)设置列表 2 下标处元素的值:
列表元素:A    B    S    D    E    
--------------------------------------------------
当前列表的长度为:5
--------------------------------------------------
当前数组元素:A    B    S    D    E    
--------------------------------------------------
将列表实例的容量调整为列表的当前大小:
列表元素:A    B    S    D    E  

文章到此就结束了,关于Java工具类ArrayList的常用API,你有get到嘛?

怕什么真理无穷,进一步自有进一步的欢喜!(^ - ^)

加油,咱们最高处见~

你可能感兴趣的:(与子共适,Java,ArrayList,API,测试编写)