ArrayList与顺序表

文章目录

  • [一. 顺序表是什么](#一. 顺序表是什么)
  • [二. ArrayList是什么](#二. ArrayList是什么)
  • [三. ArrayList的构造方法](#三. ArrayList的构造方法)
  • [四. ArrayList的常见方法](#四. ArrayList的常见方法)
    • [4.1 add()](#4.1 add())
    • [4.2 size()](#4.2 size())
    • [4.3 remove()](#4.3 remove())
    • [4.4 get()](#4.4 get())
    • [4.5 set()](#4.5 set())
    • [4.6 contains()](#4.6 contains())
    • [4.7 lastIndexOf()和 indexOf()](#4.7 lastIndexOf()和 indexOf())
    • [4.8 subList()](#4.8 subList())
    • [4.9 clear()](#4.9 clear())
  • 以上就是ArrayList的常见方法!!

一. 顺序表是什么

顺序表是用一段物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

二. ArrayList是什么

在集合框架中,ArrayList是一个普通的类,实现了List接口,它有以下几个特点:

  • ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。
  • ArrayList支持随机访问,但其插入和删除效率低。
  • ArrayList是可以clone的,是支持序列化的。
  • ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者CopyOnWriteArrayList。

三. ArrayList的构造方法

ArrayList提供了以下三种构造方法

方法一:也是最推荐的方法

javascript 复制代码
// 构造一个空的列表
List<Integer> list = new ArrayList<>();

方法二:

javascript 复制代码
// 构造一个具有10个容量的列表
List<Integer> list = new ArrayList<>(10);

方法三:

javascript 复制代码
List<Integer> list = new ArrayList<>(10);
List<Integer> list2 = new ArrayList<>(list);

重点

对顺序表进行初始化的时候,一定要指定元素的类型,否则,任意类型的元素都可以存放,会造成严重后果。

四. ArrayList的常见方法

4.1 add()

javascript 复制代码
public static void main(String[] args) {
    List<Integer> list=new ArrayList<>(); 
   //此处的add():将元素尾插进ArrayList中
    list.add(1);
    list.add(2);
    System.out.println(list);
    
    //此处的add():在list的index位置插入指定元素,index及后续的元素统一往后搬移一个位置
    list.add(1,10);
    System.out.println(list);

}

4.2 size()

获取list中有效元素个数

javascript 复制代码
 public static void main(String[] args) {
     List<Integer> list=new ArrayList<>();
     list.add(1);
     list.add(2);
     System.out.println(list);
     // 获取list中有效元素个数
     System.out.println(list.size());
 }

4.3 remove()

javascript 复制代码
 public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("苹果");
        list.add("香蕉");
        System.out.println(list);
        // 删除指定元素,找到了就删除,该元素之后的元素统一往前搬移一个位置,这里没有找到
        list.remove("梨");
        System.out.println(list);
        //删除list中index位置上的元素,这里要注意 index 是否有效
        list.remove(1);
        System.out.println(list);
    }

4.4 get()

javascript 复制代码
public static void main(String[] args) {
     List<String> list=new ArrayList<>();
     list.add("苹果");
     list.add("香蕉");
     //获取index位置上的元素,注意index是否有效(index必须介于[0,size)间)
     System.out.println(list.get(0));
 }

4.5 set()

javascript 复制代码
public static void main(String[] args) {
     List<String> list=new ArrayList<>();
     list.add("苹果");
     list.add("香蕉");
     //设置index位置上的元素为指定元素,注意index是否有效
     list.set(1,"梨");
     System.out.println(list.get(1));
     System.out.println(list);
 }

4.6 contains()

javascript 复制代码
public static void main(String[] args) {
     List<String> list=new ArrayList<>();
     list.add("苹果");
     list.add("香蕉");
     //查看list中是否包含指定元素,包含返回true,否则返回false
     if(list.contains("西瓜")){
         System.out.println("list中包含西瓜元素");
     }else{
         System.out.println("list中不包含西瓜元素");
     }
 }

4.7 lastIndexOf()和 indexOf()

javascript 复制代码
public static void main(String[] args) {
     List<String> list=new ArrayList<>();
     list.add("苹果");
     list.add("香蕉");
     list.add("梨");
     list.add("苹果");
     // 查找指定元素第一次出现的位置:indexOf从前往后找,lastIndexOf从后往前找
     System.out.println(list.indexOf("苹果"));
     System.out.println(list.lastIndexOf("苹果"));
 }

4.8 subList()

javascript 复制代码
public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("梨");
        list.add("苹果");
        // 截取list中[0, 2)之间的元素构成一个新的ArrayList返回
        List<String> list2=list.subList(0,2);
        System.out.println(list2);
    }

4.9 clear()

清空ArrayList中的元素。

以上就是ArrayList的常见方法!!

相关推荐
唐僧洗头爱飘柔95275 分钟前
【SSM-SSM整合】将Spring、SpringMVC、Mybatis三者进行整合;本文阐述了几个核心原理知识点,附带对应的源码以及描述解析
java·spring·mybatis·springmvc·动态代理·ioc容器·视图控制器
骑牛小道士17 分钟前
Java基础 集合框架 Collection接口和抽象类AbstractCollection
java
alden_ygq43 分钟前
当java进程内存使用超过jvm设置大小会发生什么?
java·开发语言·jvm
triticale1 小时前
【Java】网络编程(Socket)
java·网络·socket
淘源码d1 小时前
什么是ERP?ERP有哪些功能?小微企业ERP系统源码,SpringBoot+Vue+ElementUI+UniAPP
java·源码·erp·erp源码·企业资源计划·企业erp·工厂erp
源码方舟1 小时前
【基于ALS模型的教育视频推荐系统(Java实现)】
java·python·算法·音视频
Mcworld8571 小时前
整数分解JAVA
java·开发语言
我来整一篇2 小时前
用Redis的List实现消息队列
数据库·redis·list
小南家的青蛙2 小时前
LeetCode面试题 01.09 字符串轮转
java·leetcode
秋野酱2 小时前
基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)
java·spring boot·后端