当前位置: 首页 > news >正文

JAVA中ArrayList的解析

gogogo出发喽!让我们来认识一下它吧

什么是ArrayList

Java 中的 ArrayList 是 Java 集合框架中的重要类,用于实现动态数组

  • 动态数组:可按需自动扩展或缩小,无需手动管理数组大小。比如不断向 ArrayList 添加元素时,它会自动增加容量来存储新元素 。(当添加元素使当前容量不足时,通常会增加当前容量的一半来扩容。例如原容量为 10,添加第 11 个元素时会扩容到 15)
  • 元素存储多样:能存储包括基本数据类型(实际存储的是对应的包装类)和对象在内的各种数据类型。
  • 索引访问:和普通数组一样,可通过索引快速访问元素,时间复杂度为 O (1) 。
  • 允许重复元素:集合中能存在多个相同元素。
  • 泛型支持:使用泛型可在编译时指定存储的元素类型,提供类型安全性,避免类型转换异常。如ArrayList<String> 只能存储字符串类型元素 。
  • 非线程安全:在多线程环境中,若多个线程同时读写,需额外同步措施保证线程安全,否则可能出现数据不一致问题 。

ArrayList的创建

1.使用默认构造函数创建一个空ArrayList

    public static void main1(String[] args) {ArrayList<String> i=new ArrayList<>();//创建空的ArrayListi.add("i'm");//add来添加元素i.add("your");i.add("father");System.out.println(i);}
}

运行结果:[i'm, your, father]

 2.使用有初始容量的构造函数创建ArrayList

public static void main(String[] args) {ArrayList<Integer> k=new ArrayList<>(5);//默认容量为5k.add(1);k.add(2);k.add(3);k.add(4);k.add(5);k.add(6);//超出容量ArrayList自动扩容k.add(6);//自动扩容System.out.println(k);
}

3. 在原始ArrayList上再创建新的ArrayList

public static void main(String[] args) {List<String> U=new ArrayList<>();U.add("VIVO");U.add("OPPO");U.add("IQOO");U.add("ONEPLUS");ArrayList<String> O=new ArrayList<>(U);O.add("HUAWEI");//后加System.out.println(O);

运行结果:[VIVO, OPPO, IQOO, ONEPLUS, HUAWEI]

 4.指定位置插入add(下标,元素)

  public static void main(String[] args) {ArrayList<String> i=new ArrayList<>();i.add("i'm");i.add("your");i.add("father");i.add(3,"的儿子");//在3下标位置插入System.out.println(i);}
}

运行结果:[i'm, your, father, 的儿子]

5. 添加全部  addAll()

public class TEXT {public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("4");List<String> u= Arrays.asList("5","6");i.addAll(u);System.out.println(i);}

运行结果:[1, 2, 3, 4, 5, 6]

由 Arrays.asList() 创建的列表是固定大小的,意味着你不能使用 add()remove() 这类方法来改变列表的大小,否则会抛出 UnsupportedOperationException 异常。

6.ArrayList删除元素 remove(下标)

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("4");i.remove(3);//删除3下标System.out.println(i);
}

运行结果:[1, 2, 3]

remove(元素) 

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2"); i.add("3");i.add("3");i.add("4");i.remove("3");//删除第一个元素“3”System.out.println(i);
}

运行结果:[1, 2, 3, 4]

7.获取指定下标的元素 get(下标)

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("3");i.add("4");i.remove("3");System.out.println(i);String p=i.get(2);//获取指定下标的元素System.out.println(p);
}

运行结果:[1, 2, 3, 4]
                  3

 8.将指定下标的元素进行替换 set(下标,替换元素)

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("4");i.set(2,"7");//将2下标元素替换为“7”System.out.println(i);}

运行结果:[1, 2, 7, 4]

9.清空clear() 

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("4");i.set(2,"7");System.out.println(i);i.clear();System.out.println(i);}

运行结果:[1, 2, 7, 4]
                  []

 10.判断是否包含元素 Boolean  contains(元素)

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("4");i.set(2,"7");Boolean y=i.contains("7");System.out.println(y);//返回为true false
}

运行结果:true

11.返回元素所在的下标int  indexOf(元素)

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("1");i.add("2");i.add("3");i.add("4");i.set(2,"7");int index= i.indexOf("7");System.out.println(index);
}

运行结果:2

12.倒着查找返回第一个被找到的元素的下标int lastIndexOf(元素)

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("7");i.add("2");i.add("3");i.add("5");i.set(2,"7");//这里为倒数第一个下标为2int index= i.lastIndexOf("7");System.out.println(index);
}

运行结果:2

13.截取部分list:list<E>sublist(起始下标,结束下标)注:这里为左闭右开

public static void main(String[] args) {List<String> i=new ArrayList<>();i.add("7");//0i.add("2");//1i.add("3");//2i.add("5");//3i.set(2,"7");List<String> b=i.subList(2,3);//左闭右开这里就只有2下标元素System.out.println(b);
}

运行结果:[7]

ArrayList遍历 

1.for循环遍历

    public static void main(String[] args) {List<String> U = new ArrayList<>();U.add("VIVO");U.add("OPPO");U.add("IQOO");U.add("ONEPLUS");ArrayList<String> O = new ArrayList<>(U);O.add("HUAWEI");//后加System.out.println(O);for (int i = 0; i < O.size(); i++) {System.out.println(O.get(i));//逐条输出}}
}

运行结果:[VIVO, OPPO, IQOO, ONEPLUS, HUAWEI]
VIVO
OPPO
IQOO
ONEPLUS
HUAWEI

 

2.增强for循环输出

    public static void main(String[] args) {List<String> U = new ArrayList<>();U.add("VIVO");U.add("OPPO");U.add("IQOO");U.add("ONEPLUS");ArrayList<String> O = new ArrayList<>(U);O.add("HUAWEI");//后加System.out.println(O);for (String e : O) {System.out.println(e);//增强for循环打印}}
}

 运行结果:[VIVO, OPPO, IQOO, ONEPLUS, HUAWEI]
VIVO
OPPO
IQOO
ONEPLUS
HUAWEI

3.使用迭代器 

    public static void main(String[] args) {List<String> U = new ArrayList<>();U.add("VIVO");U.add("OPPO");U.add("IQOO");U.add("ONEPLUS");ArrayList<String> O = new ArrayList<>(U);O.add("HUAWEI");//后加System.out.println(O);Iterator<String> k = O.iterator();while (k.hasNext()) {String u = k.next();System.out.println(u);//迭代器打印}}}

 运行结果:[VIVO, OPPO, IQOO, ONEPLUS, HUAWEI]
VIVO
OPPO
IQOO
ONEPLUS
HUAWEI

好了相信看到这里你一定有很多收获吧,好兄弟我们下期再见~~~

相关文章:

  • C语言初阶:数组
  • Webug4.0靶场通关笔记20- 第25关越权查看admin
  • Webug4.0靶场通关笔记19- 第24关邮箱轰炸
  • 限流算法学习笔记(一)Go Rate Limiter
  • 数据实验分析
  • RabbitMQ-springboot开发-应用通信
  • 精益数据分析(48/126):UGC商业模式的指标剖析与运营策略
  • JVM中类加载过程是什么?
  • node.js 实战——餐厅静态主页编写(express+node+ejs+bootstrap)
  • css识别\n换行
  • 安卓工程build.gradle中的Groovy的常见知识点
  • 【神经网络与深度学习】VAE 中的先验分布指的是什么
  • “胖都来”商标申请可以通过注册不!
  • Eclipse通过Tomcat启动web项目报错
  • 使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结
  • 基于 ISO 22301 与国产化实践的 BCM 系统菜单设计指南
  • 【疑难杂症2025-003】Java-mvn项目在gitlab-ci构建镜像时遇到的问题和解决方案
  • ✍️【TS类型体操进阶】挑战类型极限,成为类型魔法师![特殊字符]♂️✨
  • EDU/EDU.CN教育邮箱的申请(申请成功可以免费使用一年CursorPro)
  • 【漫话机器学习系列】245.权重衰减(Weight Decay)
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 央行:中国政府债务扩张仍有可持续性
  • 视频丨雄姿英发!中国仪仗队步入莫斯科红场
  • 美乌基金协议:美国搞了一套可在资源富集地区复刻的商业模式
  • 万达电影:股东杭州臻希拟减持不超1.3927%公司股份
  • 新消费观察| 零售品牌 “走出去” ,如何开辟“新蓝海”?