java-ArrayList

一、集合与数组的区别

1、长度

数组的长度是不可变的

集合的长度是可变的

2、存储的数据类型

数组存储的数据类型可以是基本数据类型也可以是引用数据类型

集合存储的数据类型只能是引用数据类型,如果想要存储基本数据类型则需要变成对应的包装类

class Person{String name;int age;void show(){System.out.println("人类");}
}public class 数组与集合 {public static void main(String[] args) {// 存储基本数据类型int [] arr={1,2,3};// 存储引用数据类型Person [] arr_person=new Person[3];Person p1=new Person();Person p2=new Person();Person p3=new Person();arr_person[0]=p1;arr_person[1]=p2;arr_person[2]=p3;}
}

二、集合的创建

语法:ArrayList<存放的数据类型> list=new ArrayList<>();

其中<存放的数据类型>也称之为泛型,用来限定集合存储数据的类型

public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();System.out.println(list);}
}

三、集合的成员方法

以添加字符串为例

1、增

语法:集合名称.add(元素);

其返回值是true 表示添加成功(且返回值永远是true)

import java.util.ArrayList;public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为trueboolean result=list.add("你好");System.out.println(result);// 输出:trueSystem.out.println(list);// 输出:[你好]}
}

2、删

语法1:集合名称.remove(元素);   根据元素删除

其返回值是true 表示删除成功 返回值是false 表示删除失败(当容器中没有该元素时 就会删除失败)

import java.util.ArrayList;public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为truelist.add("你好");list.add("世界");list.add("皮卡丘");// 容器名称.remove(元素) 删除元素// 删除存在的元素boolean result1=list.remove("你好");System.out.println(result1);// 输出:trueSystem.out.println(list);// 输出:[世界, 皮卡丘]// 删除不存在的元素boolean result2=list.remove("pkq");System.out.println(result2);// 输出:falseSystem.out.println(list);// 输出:[世界, 皮卡丘]}
}

语法2:集合名称.remove(索引);   根据索引删除

其返回值是被删除的元素

import java.util.ArrayList;public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为truelist.add("你好");list.add("世界");list.add("皮卡丘");// 容器名称.remove(索引)// 返回删除的元素String result1=list.remove(1);System.out.println(result1);// 输出:世界System.out.println(list);// 输出:[你好, 皮卡丘]}
}

3、改

语法:集合名称.set(索引,修改后元素);

修改指定索引下的元素使其变成修改后的元素,返回值为原来的元素

import java.util.ArrayList;public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为truelist.add("你好");list.add("世界");list.add("皮卡丘");// 容器名称.set(索引,元素);// 返回修改前的元素String str=list.set(1,"java");System.out.println(str);//输出: 世界System.out.println(list);//输出: [你好, java, 皮卡丘]}
}

4、查

语法1:集合名称.get(索引);

获取指定索引下的元素

import java.util.ArrayList;public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为truelist.add("你好");list.add("世界");list.add("皮卡丘");// 容器名称.get(索引);// 返回指定索引下的元素String str=list.get(0);System.out.println(str);//输出: 你好System.out.println(list);//输出: [你好, 世界, 皮卡丘]}
}

语法2:集合名称.size;

获取集合的长度

import java.util.ArrayList;public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为truelist.add("你好");list.add("世界");list.add("皮卡丘");// 容器名称.size()// 返回集合的长度int size=list.size();System.out.println(size);// 输出:3}
}

遍历集合元素

public class 集合的创建 {public static void main(String[] args) {// 创建集合的对象// 泛型:限定集合存储数据的类型 e.g:<String>// 打印容器变量 输出的不是该容器的地址值 而是容器中存放的数据内容ArrayList<String> list=new ArrayList<>();// 容器名称.add() 添加元素// 返回值为truelist.add("你好");list.add("世界");list.add("皮卡丘");// 遍历数组元素// 输入list.fori即可for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}// 输出:// 你好// 世界// 皮卡丘}
}

四、集合添加基本数据类型

集合添加基本数据类型需要将基本数据类型转化为对应的包装类

import java.util.ArrayList;public class 集合添加基本数据类型 {public static void main(String[] args) {// jdk5以后int和Integer可以相互转化// 1.创建容器ArrayList<Integer> list1=new ArrayList<>();// 2.添加元素list1.add(1);list1.add(2);list1.add(3);list1.add(4);System.out.println(list1);// 输出:[1, 2, 3, 4]// 3.修改元素// 返回修改前的元素int result1=list1.set(1,5);System.out.println(result1);// 输出:2System.out.println(list1);// 输出:[1, 5, 3, 4]// 4.删除元素// 根据索引删除 返回值为删除的元素int result2=list1.remove(1);System.out.println(result2);// 输出:5System.out.println(list1);// 输出:[1, 3, 4]// 根据元素删除 返回值为true、false// 如果你想要按值删除元素,你需要遍历列表并找到该值的索引,然后调用 remove(int index) 方法。// 或者,你可以使用 removeIf(i->i==要删除的元素) 方法(从 Java 8 开始提供),该方法允许你基于条件删除元素。boolean result3=list1.removeIf(i -> i == 4);System.out.println(result3);// 输出:trueSystem.out.println(list1);// 输出:[1, 3]// 5.查找元素// 不能像集合一样 按照索引查找元素 e.g:list1[i]是错误的 必须是list1.get(索引值)System.out.println(list1.get(1));// 输出:3for (int i = 0; i < list1.size(); i++) {System.out.print(list1.get(i)+" ");}// 输出:1 3// 1.创建容器ArrayList<Character> list2=new ArrayList<>();// 2.添加元素list2.add('a');list2.add('b');list2.add('c');list2.add('d');System.out.println(list2);// 输出:[a, b, c, d]// 3.修改元素// 返回修改前的元素值char r1=list2.set(1,'e');System.out.println(r1);// 输出:bSystem.out.println(list2);// 输出:[a, e, c, d]// 4.删除元素// 按索引删除元素 返回返回的元素char r2=list2.remove(1);System.out.println(r2);// 输出:eSystem.out.println(list2);// 输出:[a, c, d]// 按元素删除元素 返回true、falseboolean r3=list2.removeIf(i->i=='c');System.out.println(r3);// 输出:trueSystem.out.println(list2);// 输出:[a, d]// 5.查找元素char r4=list2.get(0);// 输出:aSystem.out.println(r4);for (int i = 0; i < list2.size(); i++) {System.out.print(list2.get(i)+" ");}// 输出:a d }
}

五、集合添加自定义类的对象

import java.util.ArrayList;
class Person{private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
public class 数组与集合 {public static void main(String[] args) {// 1.创建集合ArrayList<Person> list=new ArrayList<>();Person p1=new Person("皮卡丘",19);Person p2=new Person("星之卡比",20);Person p3=new Person("玉桂狗",18);Person p4=new Person("布丁狗",18);// 2.添加元素list.add(p1);list.add(p2);list.add(p3);System.out.println(list);// 输出结果:是对象的引用// [demo18_ArrayList.Person@3b07d329, demo18_ArrayList.Person@41629346, demo18_ArrayList.Person@404b9385]// 3.遍历元素for (int i = 0; i < list.size(); i++) {// list.get(i)是列表中第 i 个元素的引用。这个引用指向一个 Person 对象,而不是对象的内存地址System.out.println("学生姓名是:"+list.get(i).getName()+",学生姓名是:"+list.get(i).getAge());// 学生姓名是:皮卡丘,学生姓名是:19// 学生姓名是:星之卡比,学生姓名是:20// 学生姓名是:玉桂狗,学生姓名是:18}//4.修改元素 返回修改前的元素Person pp=list.set(1,p4);System.out.println(pp);//demo18_ArrayList.Person@41629346// 遍历元素for (int i = 0; i < list.size(); i++) {// list.get(i)是列表中第 i 个元素的引用。这个引用指向一个 Person 对象,而不是对象的内存地址System.out.println("学生姓名是:"+list.get(i).getName()+",学生姓名是:"+list.get(i).getAge());// 学生姓名是:皮卡丘,学生姓名是:19// 学生姓名是:布丁狗,学生姓名是:18// 学生姓名是:玉桂狗,学生姓名是:18}// 5.删除元素// 通过索引删除 返回删除的元素即该对象的引用Person p=list.remove(1);System.out.println(p);// 通过元素删除(元素是Person类)  返回true、falseboolean result=list.remove(p2); // demo18_ArrayList.Person@41629346System.out.println(result); // false// 遍历元素for (int i = 0; i < list.size(); i++) {// list.get(i)是列表中第 i 个元素的引用。这个引用指向一个 Person 对象,而不是对象的内存地址System.out.println("学生姓名是:"+list.get(i).getName()+",学生姓名是:"+list.get(i).getAge());// 学生姓名是:皮卡丘,学生姓名是:19// 学生姓名是:玉桂狗,学生姓名是:18}}
}

六、集合的作用

当方法需要返回多个数据时,我们可以将数据存放在容器中,返回容器即可(返回的容器要交代是什么类型)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/626072.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业IT部门在集成类项目中扮演的角色

随着企业信息化建设的不断深入&#xff0c;集成类项目成为企业发展的重要支撑。这类项目涉及场景多、系统杂、实施牵扯广、周期长&#xff0c;对技术和管理的要求极高。企业IT部门&#xff08;信息化部门&#xff09;作为企业的技术核心和纽带&#xff0c;对业务需求、技术选型…

为什么电动车空调压缩机总是坏 IGBT?

纯电动车空调压缩机中的IGBT频繁出现故障可能由多种原因引起。以下是一些可能的原因及其解释&#xff1a; 过压失效 IGBT可能因为承受的电压超过其工作范围而损坏。 由于电源电压异常波动&#xff0c;或者压缩机控制器内部元器件被击穿导致的高压情况。为了保护IGBT&#xff0c…

是谁还在坚持用 QQ?腾讯回应:好冷漠...

近日&#xff0c;“仍有5亿人坚持用QQ”的话题登上微博热搜&#xff0c;引发网友热议。 根据腾讯财报&#xff0c;截至2023年第三季度&#xff0c;QQ智能终端月活跃用户数为5.58亿&#xff0c;仅占微信四成。但换个角度看&#xff0c;作为一款25岁的元老级社交应用&#xff0c;…

交易的赚钱之道,真正的高手都是秘而不宣的

市场中从来都不缺少机会&#xff0c;而是诱惑太多了。在当前的金融交易市场中&#xff0c;讨论止损的文章层出不穷&#xff0c;这确实是至关重要的&#xff0c;因为这是保命的关键。然而&#xff0c;相对而言&#xff0c;关于如何扩大利润的讨论却寥寥无几。 在今天我要向大家推…

PFA容量瓶为什么这么贵?

PFA&#xff0c;全称为可溶性聚四氟乙烯&#xff0c;是一种高分子材料&#xff0c;具有优异的耐腐蚀、耐高温和绝缘性能。因此&#xff0c;PFA容量瓶能够承受多种化学品的腐蚀&#xff0c;保证存储物质的纯度和稳定性。 目前PFA原材料还是依赖进口&#xff0c;加工工艺也比较特…

基于SSM+Jsp+Mysql的贝儿米幼儿教育管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

Rust - 引用和借用

上一篇章末尾提到&#xff0c;如果仅仅支持通过转移所有权的方式获取一个值&#xff0c;那会让程序变得复杂。 Rust 能否像其它编程语言一样&#xff0c;使用某个变量的指针或者引用呢&#xff1f;答案是可以。 Rust 通过 借用(Borrowing) 这个行为来达成上述的目的&#xff0…

【AI开发:语言】二、Qwen1.5-7B模型本地部署CPU和GPU版

前言 之前文章&#xff0c;我们采用了Koblod运行Yi-34B大模型&#xff0c;本文采用LM Studio来运行千问模型。 LM Studio并没有开源&#xff0c;但是可以免费使用&#xff0c;他是目前本地进行模型测试最好的工具了。 在这里&#xff0c;依然使用Windows 10进行部署和测试&…

Flink CDC:使用 Flink SQL 将多表写入一个 Kafka Topic 以及 Flink 作业数量的测试

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

编程入门(二)【计算机基础三】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言五、常用软件的相关介绍六、操作系统的相关介绍七、Window11系统的基本操…

全域电商国内外主流电商平台商品API接口数据采集【附返回实例】

国内主流电商平台包括&#xff1a; 1. 淘宝&#xff1a;阿里巴巴旗下的电子商务平台&#xff0c;以C2C和B2C交易为主要业务模式。 2. 天猫&#xff1a;阿里巴巴旗下的B2C电子商务平台&#xff0c;为品牌商和零售商提供销售渠道和服务。 3. 京东&#xff1a;一家以B2C为主营业务…

C语言-指针

1. 指针是什么 指针理解的2个要点&#xff1a; 1.1. 指针是内存中一个最小单元的编号&#xff0c;也就是地址 1.2 平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量 总结&#xff1a;指针就是地址&#xff0c;口…