IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 简谈ArrayList特有的方法 -> 正文阅读

[数据结构与算法]简谈ArrayList特有的方法

一、ArrayList是什么?

ArrayList是一个可变数组类,实现了collection接口、List接口。每个 ArrayList 实例都有一个容量,在该类的构造方法中有ArrayList(int initialcapacity)就是创建一个指定的initialcapacity大小的数组;构造方法ArrayList()就是创建一个初始大小为10的数组。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。

二、ArrayList的方法

ArrayList类实现了collection接口、List接口,因此具有了collection接口和List接口的方法,collection接口的方法前面已经谈过,可以看我之前发的博客collection接口,这里就省略。接下来我介绍一下ArrayList独有的方法:

  1. int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
 		ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println(list);
        int num1 = list.indexOf(2);
        int num2 = list.indexOf(6);
        System.out.println("2的索引num1: "+num1);
        System.out.println("6的索引num2: "+num2);

运行结果:
在这里插入图片描述

  1. boolean addAll(Collection<? extends E> c) 按照指定 collection 集合的迭代器所返回的元素顺序,将该 collection 集合中的所有元素添加到此列表的尾部。
    注意:该方法的参数Collection<? extends E> c是说明:(1)该参数必须是集合Collection的实例对象,(2)该集合元素的类型必须是与调用该方法集合的类型一致或者是该类型的子类(3)返回值是Boolean值,添加成功为true,否则为false
 	 	ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println("list="+list);
        ArrayList<Integer> copyList=new ArrayList<>();
        //将list集合作为参数传递给copyList的addAll方法,copyList就有list一样的元素,且是在copyList末尾接续添加
        copyList.addAll(list);
        System.out.println("添加一次list后copyList="+copyList);
        copyList.addAll(list);
        System.out.println("添加二次list后copyList="+copyList);

运行结果:
在这里插入图片描述

  1. boolean addAll(int index, Collection<? extends E> c) 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
    注意:该方法的参数int index和Collection<? extends E> c是说明:(1)该参数必须是集合Collection的实例对象,(2)该集合元素的类型必须是与调用该方法集合的类.(3)参数index是指调用该方法的集合的索引位置开始添加元素,且不会覆盖原来的元素,只是index索引后面的元素被挤到最后去了(4) 返回值是Boolean值,添加成功为true,否则为false
 		ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println("list="+list);
        ArrayList<Integer> copyList=new ArrayList<>();
        copyList.addAll(list);
        System.out.println("添加一次list后copyList="+copyList);
        /*
         boolean addAll(int index, Collection<? extends E> c) 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
         */
        copyList.addAll(2,list);
        System.out.println("在原copyList中2位置处添加list后copyList="+copyList);

运行结果:
在这里插入图片描述

  1. Object[] toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
    注意:(1)返回的是一个Object类型的数组,
    (2)理论这个数组的每个元素都只能使用Object类中的方法,无法直接使用集合泛型中类的方法(要使用必须进行强转类型)。
		ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println("list="+list);
        Object[] arr = list.toArray();
        System.out.println("数组类型为"+arr.getClass());
        System.out.print("储存为数组后arr:[");
        int i;
        for (i = 0; i < arr.length-1; i++) {
            System.out.print(arr[i]+", ");
        }
        System.out.println(arr[i]+"]");

运行结果:
在这里插入图片描述

  1. T[] toArray(T[] a) 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
    注意:类型T与调用该方法的集合的泛型一致,参数T[]a是一个数组,调用该方法的集合中的元素最终会保存到a数组中(a数组使用前要进行初始化,底层中如果a数组长度小,就会先将a数组扩充在存放数组),返回值是一个数组(可以用a数组接收,也可以使用其他相同类型的数组接收)。
//初始化a数组可以任意(尽量和原集合一样长,避免扩充数组时带来的额外损耗),类型是定义ArrayList对象时声明好的
		ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println("list="+list);
        Integer []a=new Integer[2];
        //可以使用另一个数组接收
        Integer[] integer = list.toArray(a);
        System.out.print("使用integer数组接收integer:[");
        int i1;
        for (i1 = 0; i1 < integer.length-1; i1++) {
                System.out.print(integer[i1]+" ");
        }
        System.out.println(integer[i1]+"]");
        //可以使用a数组进行接收
        a=list.toArray(a);
        System.out.print("使用a数组接收a:[");
        for (i1 = 0; i1 < a.length-1; i1++) {
            System.out.print(a[i1]+" ");
        }
        System.out.println(a[i1]+"]");

运行结果:
在这里插入图片描述

  数据结构与算法 最新文章
【数据结构】二叉查找树/二叉搜索树BST(附
二叉树的前序后续中序遍历(迭代)(C++)
【贪心算法】手办合并
LeetCode 每日一题——462. 最少移动次数使
leetcode47. 全排列 II
Java二叉树
线性结构(一)
【Java版算法思想(排序)】选择&冒泡&
LeetCode系列49—字母异位词分组
NC78 反转链表
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:44:21  更:2022-01-17 11:46:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
360图书馆 购物 三丰科技 阅读网 日历 万年历 2022年5日历 -2022/5/24 5:40:25-
图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码