2.ArrayList
ArrayList集合快速入门
ArrayList是集合中的一种,它支持索引。
对象获取:
构造器 说明 |
public ArrayList( ) 创建一个空的集合对象 |
ArrayList集合添加元素的方法
方法名 说明 |
public boolean add(Ee) 将指定的元素追加到此集合的末尾 |
public void add(int index,E element) 在此集合中的指定位置插入指定的元素 |
package com.ArrayList;
import java.util.ArrayList;
public class ArrayList01 {
public static void main(String[] args) {
//1.创建集合对象
ArrayList list=new ArrayList();
//2.添加数据
list.add("Java");
list.add("Java");
list.add("Mysql");
System.out.println(list);
//指定索引位置插入索引
list.add(1,"迪丽热巴");
System.out.println(list);
}
}
ArrayList对于泛型的支持
泛型概述:ArrayList<E>:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。
例子:ArrayList<String> :此集合只能操作字符串类型的元素。
ArrayList<integer>:此集合只能操作整数类型的元素。
注意:集合中只能存储引用类型,不支持基本数据类型。
ArrayList常用API、遍历
方法名称 说明 |
public E get(int index) 返回指定索引处的元素 |
public int size() 返回集合中的元素的个数 |
public E remove(int index) 删除指定索引处的元素,返回被删除的元素 |
public boolean remove(Object o) 删除指定的元素,返回删除是否成功 |
public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 |
package com.ArrayList;
import java.util.ArrayList;
public class ArrayList02 {
public static void main(String[] args) {
ArrayList<String >list=new ArrayList<>();
list.add("Java");
list.add("java");
list.add("HySQL");
list.add("MyBatis");
list.add("HTML");
// 1. public E get(int index):
String e = list.get(3);
System.out.println(e);
// 2. public int sizeo。获取集合的大小《元素个数)
System.out.println(list.size());
//3.完成集合的遍历
for (int i =0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//4、public E remove(int index)。剧除某个索引位置处的元素值,并返回被删除的元素值
System.out.println(list); //[Java,Java,MySQL,MyBatis,HTNL]
String e2=list.remove(2);
System.out.println(e2);
System.out.println(list);
//5.
}
}
ArrayList集合案例:遍历并删除元素
某个班级的考试在系统上进行,成绩大致为: 98,77,66,89,79,50,100
现在需要先把成绩低于80分以下的数据去掉。
分析:定义ArrayList集合存储多名学员的成绩。
遍历集合每个元素,如果元素值低于80分,去掉它。
package com.ArrayList;
import java.util.ArrayList;
public class ArrayList03 {
public static void main(String[] args) {
//创建ArrayList
ArrayList<Integer> scores=new ArrayList<>();
scores.add(98);
scores.add(77);
scores.add(66);
scores.add(89);
scores.add(79);
scores.add(50);
scores.add(100);
System.out.println(scores);
//低于80分成绩从集合中去掉
//法一
/* for (int i = 0; i < scores.size(); i++) {
int score=scores.get(i);
if (score<80){
//分数删除
scores.remove(i);
i--;//删除成功后退一步 这样可以保证下次回到这个位置
}
}
System.out.println(scores);*/
//法二
//从后面倒着遍历
for (int i = scores.size()-1; i >=0 ; i--) {
int score=scores.get(i);
if (score<80){
//分数删除
scores.remove(i);
}
}
System.out.println(scores);
}
}
ArrayList集合案例:存储自定义类型的对象
某影院系统需要在后台存储上述三部电影,然后依次展示出来。
分析:定义一个电影类,定义一个集合存储电影对象。
创建3个电影对象,封装相关数据,把3个对象存入到集合中去。
遍历集合中的3个对象,输出相关信息。
package com.ArrayList;
import java.util.ArrayList;
public class ArrayList04 {
public static void main(String[] args) {
//定义电影类
//创建3个电影对象
movie e1 = new movie("《肖生克的救赎》", 9.7, "罗宾斯");
movie e2=new movie("《霸王别姬》",9.7,"张国荣,张丰毅");
movie e3=new movie("《阿甘正传》",9.5,"汤姆.汉克斯");
//创建集合
ArrayList<movie> movies=new ArrayList<>();
movies.add(e1);
movies.add(e2);
movies.add(e3);
System.out.println(movies);
//遍历每个电影对象
for (int i = 0; i < movies.size(); i++) {
//
movie m=movies.get(i);
System.out.println("电影名称:"+m.getName());
System.out.println("电影得分:"+m.getScore());
System.out.println("电影主演:"+m.getActor());
}
}
}
package com.ArrayList;
public class movie {
private String name;
private double score;
private String actor;
public movie() {
}
public movie(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
}
结论:集合中存储的元素并不是对象本身,而是对象的地址。
ArrayList集合案例:元素搜索
学生信息系统的数据搜索:
后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能。
分析:定义Student类,定义ArrayList集合存储如上学生对象信息,并遍历展示出来。
提供一个方法,可以接收ArrayList集合,和要搜索的学号,返回搜索到的学生对象信息,并展示。
使用死循环,让用户可以不停的搜索。
package com.ArrayList;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayList05 {
public static void main(String[] args) {
//定义学生类
//创建集合存储学生对象 创建学生对象封装学生对象
ArrayList<student> students=new ArrayList<>();
students.add(new student("20180302","呼孤城",23,"护理一斑"));
students.add(new student("20180303","东方不败",23,"”推拿二班"));
students.add(new student("20180384","西门欧雪",26,"中药学四班"));
students.add(new student("26186305","梅超风",26,"神经科2班"));
//遍历学生信息
System.out.println("学号\t名称\t年龄\t班级");
for (int i = 0; i < students.size(); i++) {
student s=students.get(i);
System.out.println(s.getStudynumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassname());
}
//定义方法 按照学号搜索功能
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("输入学号查询学生对象:");
String studynumber=sc.next();
//调用方法
student s=getstudentbyid(students,studynumber);
//判断是否存在学生对象
if(s==null){
System.out.println("对不起,查无此人");
}else {
System.out.println("查询学生对象如下:");
System.out.println(s.getStudynumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassname());
}
}
}
/**
* 根据学生学号查询学生对象返回
* @param students 存储全部学生对象部分
* @param studynumber 搜索的学生学号
* @return 学生对象 null
*/
public static student getstudentbyid(ArrayList<student> students,String studynumber){
//遍历全部学生对象
for (int i = 0; i < students.size(); i++) {
student s=students.get(i);
//询问当前遍历学生学号是否是要找的学号
if (s.getStudynumber().equals(studynumber)){
return s;
}
}
//查无此人
return null;
}
}
package com.ArrayList;
public class student {
private String studynumber;
private String name;
private int age;
private String classname;
public student() {
}
public student(String studynumber, String name, int age, String classname) {
this.studynumber = studynumber;
this.name = name;
this.age = age;
this.classname = classname;
}
public String getStudynumber() {
return studynumber;
}
public void setStudynumber(String studynumber) {
this.studynumber = studynumber;
}
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 String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
}