Java——ArrayList

数组与集合

一、数组和集合元素存储的个数问题

  • 数组定义后类型确定,长度固定。
  • 集合类型可以不固定,大小是可变的。

二、数组和集合的适合场景

  • 数组适合做元素个数和类型确定的场景。
  • 集合适合做数据个数不确定,且要做增删元素的场景。

ArrayList

一、ArrayList集合

  • ArrayList是集合的一种,它支持索引。

二、ArrayList集合的对象创建与添加元素的方法

请添加图片描述
三、怎样统一ArrayList集合操作的元素类型

请添加图片描述

ArrayList常用API

请添加图片描述

public boolean remove(Object o) 默认删除集合里指定元素的第一个

Tips

tips1 从集合中遍历元素,并筛选出元素删除它,应该怎么解决?

    1. 从集合后面遍历然后删除,可以避免漏掉元素。
    1. 若从集合前面遍历,则每删除一个元素 计数器i–,避免跳过元素。

tips2 集合中存储的元素并不是对象本身,而是对象的地址。

实训练习

一、
请添加图片描述

package arrayListdeom;

import java.util.ArrayList;

public class test1 {
	public static void main(String[] args) {
		//创建一个ArrayLiat集合存储一个班级学生成绩
		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的学生成绩从集合中删去
		scores = [98, 77, 66, 89, 79, 50, 100]
                   0   1   2   3   4   5   6		
		*/
		//两个方法选其一
		//方法一
		for(int i = 0 ; i < scores.size(); i++)
		{
			int score = scores.get(i);
			if(score < 80)
			{
				//删除该分数
				int m = scores.remove(i);
				i--;//避免跳过元素
			}
		}
		//方法二,从后开始遍历
		for(int i = scores.size()-1 ; i >= 0 ; i--)
		{
			int score = scores.get(i);
			if(score < 80)
			{
				//删除该分数
				int m = scores.remove(i);
			}
		}
		System.out.println("学生最终成绩表:"+ scores);
	}
}

二、
请添加图片描述
创建的电影类

package arrayListdeom;

public class movie {
		private String name;
		private String score;
		private String actor;
		
		public movie(){			
		}
		
		public movie(String name,String score,String actor){
			this.name = name;
			this.score = score;
			this.actor = actor;
		}
		
		public void setName(String name){
			this.name = name;
		}
		
		public String getName(){
			return name;
		}
		
		public void setScore(String score){
			this.score = score;
		}
		
		public String getScore(){
			return score;
		}
		
		public void setActor(String actor){
			this.actor = actor;
		}
		
		public String getActor(){
			return actor;
		}

}

package arrayListdeom;

import java.util.ArrayList;

public class test2 {
	public static void main(String[] args) {
		//1.定义一个电影类
		//2.创建一个电影类ArrayList集合,创建三个电影对象,并存储到集合中
		ArrayList<movie> movies = new ArrayList<>();
		movies.add(new movie("《肖申客的救赎》","9.7","罗宾斯"));
		movies.add(new movie("《霸王别姬》","9.4","张丰毅,张国荣"));
		movies.add(new movie("《阿甘正传》","9.5","汤姆.汉克斯"));
		//3.遍历电影类型的集合中的每个电影对象,访问它的信息即可
		for(int i = 0 ; i < movies.size(); i++){
			//i = 0 1 2
			movie m = movies.get(i);
			System.out.println("电影的名称是:"+ m.getName());
			System.out.println("电影评分:"+ m.getScore());
			System.out.println("演员:" + m.getActor());
			System.out.println("------------------------");
		}
		
	}
}

三、
请添加图片描述
创建学生类

package arrayListdeom;

public class student {
	private String number;
	private String name;
	private int age;
	private String clas;
	//无参构造器
	public student() {
		
	}
    //有参构造器
	public student(String number, String name, int age, String clas) {
		this.number = number;
		this.name = name;
		this.age = age;
		this.clas = clas;
	}

	public void setNumber(String number){
		this.number = number;
	}
	
	public  String getNumber(){
		return number;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getName(){
		return name;
	}
	
	public void setAge(int age){
		this.age = age;
	}
	
	public int getAge(){
		return age;
	}
	
	public void setClas(String clas){
		this.clas = clas;
	}
	
	public String getClas(){
		return clas;
	}
}

package arrayListdeom;

import java.util.ArrayList;
import java.util.Scanner;

public class test3 {
	public static void main(String[] args) {
		//1.定义学生类
		//2.创建一个学生类ArrayList集合,创建4学生对象,并存储到集合中
		ArrayList<student> students = new ArrayList<>();
		students.add(new student("20180302","叶孤城",23,"护理一班"));
		students.add(new student("20180303","东方不败",23,"推拿二班"));
		students.add(new student("20180304","西门吹雪",26,"中药学四班"));
		students.add(new student("20180305","梅超风",26,"神经科二班"));
		
		//3.遍历学生信息并展示
		System.out.println("学号\t\t姓名\t\t年龄\t\t班级");
		for(int i = 0 ; i < students.size(); i++)
		{
			student s = students.get(i);
			System.out.println(s.getNumber()+"\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getClas());
		}
		//5.通过学号搜索学生
		Scanner sc = new Scanner(System.in);
		while(true)
		{
			System.out.println("请您输入学号查询对象:");
			String r = sc.next();
			student m = searchById(students,r);
			//判断是否找到学生
			if(m == null)
			{
				System.out.println("对不起,查无此人");
			}else {
				System.out.println("您查询的学生信息如下");
				System.out.println(m.getNumber()+"\t"+m.getName()+"\t\t"+m.getAge()+"\t"+m.getClas());
			}
		}
	}	
		//4.提供一个方法搜素并返回集合对象
		public static student searchById(ArrayList<student> students, String number)
		{//1.遍历全部学生对象
			for(int i = 0; i < students.size(); i++)
			{
				student s = students.get(i);
				//2.询问当前遍历的这个学生学号是否是我们要找的
				if(s.getNumber().equals(number))
				{
					return s;
				}
			}
			//查无此人
			 return null;
		}
		
	
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值