老王学JAVA一个月零三天

本文深入讲解ArrayList集合类的特性和使用方法,包括与数组的区别、泛型应用、基本操作如添加、获取和删除元素,以及如何存储不同类型数据和自定义对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ArrayList集合类:(单词的第一个字母是大写说明是一个类,但是Array是数组的意思)

概述和基本要求 :

之前我们学习了Array:

public 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;
	}
	
	
}

对象数组
*

  • 题目:
  • 定义一个数组,用来存储3个Person对象。
  • 数组有一个缺点:
  • 一旦创建,程序运行期间长度不可以发生改变
ublic class Demo01Array {
	
	public static void main(String[]args){
		//首先创建一个长度为3的数组,里面用来存放Person类型的对象
		Person[] array = new Person[3];//0,1,2
//		System.out.println(array[0]);//默认值是规则当中的null值。当然1,2都是一样的
		
		Person one = new Person ("迪丽热巴", 18);//直接使用是成员变量的构造方法直接赋值
		Person two = new Person("古力娜扎", 28);
		Person three = new Person("玛尔扎哈", 38);
		
		
		//将one当中的地址值赋值到数组的0号元素位置
		array[0] = one;
		array[1] = two;
		array[2] = three;
		
		System.out.println(array[0]);//地址值
		System.out.println(array[1]);//地址值
		System.out.println(array[2]);//地址值
		
	//	Person person = array[1];
	//	System.out.println(person.getName());//古力娜扎
		System.out.println(array[1].getName());//古力娜扎
	//任何数据类型都可以作为数组当中元素的类型,不光存储基本类型,还可以存储字符串类型,还可以存储自定义的Person类型
		
	}

}

Array和ArrayList最大的区别所在:
数组的长度不可以发生改变。
但是ArrayList集合长度是可以随意变化的。

在查看API当中,ArrayList:有个尖括号这个叫泛型
泛型:也就是装载集合当中的所有元素,全部是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型。

注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
如果内容是空,得到的是空的中括号。[]
那么有 内容,中括号当中就会显示。

import java.util.ArrayList;

public class Demo02ArrayList {
	
	public static void main(String[]args){
		//创建类一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据
		//备注:从JDK1.7开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写上的。
		ArrayList<String> list = new ArrayList<String>();
		System.out.println(list);//[]
		
		
		//向集合当中添加一些数据,需要用到add方法。
		list.add("赵丽颖");
		System.out.println(list);//[赵丽颖]
		
		list.add("迪丽热吧");
		list.add("古力娜扎");
		list.add("马儿扎哈");
		System.out.println(list);//[赵丽颖, 迪丽热吧, 古力娜扎, 马儿扎哈]
		
//		list.add(100);//错误写法,因为创建的时候尖括号泛型已经说了是(<String>)字符串,
		//添加进去的元素必须是字符串才行,否则就会报错
		
	}

}

ArrayList集合的常用方法和遍历:
ArrayList当中的常用方法:

pbulic boolen add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加成功。
备注: 对于ArrayList集合来说,add添加动作一定是成功的,所以返回值是可用可不用。
但是对于其他集合(今后学习)来说,add添加动作不一定成功。

public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应的元素。

public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。

public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。

import java.util.ArrayList;
public class Demo03ArrayListMethod {
	
	public static void main(String[]args){
		ArrayList<String> list = new ArrayList<String>();//右侧的尖括号里     //  //       的String,在1.7JDK以后就可以省略不行
		System.out.println(list);//[]
//向集合中添加元素:add//返回值想用就接受,不想用就直接add就可
		 boolean success = list.add("柳岩");//add方法是带有返回值的,所以//  //要接受(boolean success)一下,
		 System.out.println(list);
		 System.out.println("添加的动作是否成功:" + success);//true

		 list.add("高圆圆");
		 list.add("赵又廷");
		 list.add("李小璐");
		 list.add("贾乃亮");
		 System.out.println(list);//[柳岩, 高圆圆, 赵又廷, 李小璐, 贾乃亮]
		 
		 //从集合中获取元素:get。索引值从0开始
		 String name = list.get(2);
		 	System.out.println("第二号索引位置:" + name);
		 	
		 	//从集合中删除元素,remove。索引值是从0开始的。
		 	 String whoRemoved = list.remove(3);
		 	 System.out.println("被删除的人是谁:" + whoRemoved);//李小璐
		 	 System.out.println(list);//[柳岩, 高圆圆, 赵又廷, 贾乃亮]
		 	 
		 	 
		 	 //获取集合的长度尺寸,也就是其中元素的个数
		 	 int size = list.size();
		 	System.out.println("集合的长度是:" + size);//4
	}
	

}

那么集合遍历:

import java.util.ArrayList;

/*Each 是每一个的意思 
 * */

public class Demo04ListEach {
	
	public static void main(String[]args){
		ArrayList<String> list = new ArrayList<String>();
		list.add("迪丽热巴");
		list.add("古力娜扎");
		list.add("马儿咋哈");
		
//	遍历集合
		for(int i = 0; i < list.size(); i++){
			System.out.println(list.get(i));
		
			
		
		}
		
	}

}

ArrayList 集合存储类型转换:

/*如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
*

  • 基本类型 包装类(引用类型,包装类都位于java.lang包下)
  • byte Byte
  • short Short
  • int Integer 【特殊】
  • long Long
  • float Float
  • double Double
  • char Character 【特殊】
  • boolean Boolean
  • 从JDK1.5+开始,支持自动装箱,自动拆箱。
  • 自动装箱:基本类型 -->包装类型(自动转换成了引用类型)
  • 自动拆箱:包装类型–>基本类型(自动转换成了基本类型)
import java.util.ArrayList;

public class Demo05ArrayListBasic {
	public static void main(String[]args){
		ArrayList<String> listA = new ArrayList<String>();
		//错误写法,泛型只能是引用类型,不能是基本类型
//		ArrayList<int> listB = new ArrayList<>();
		
		
		ArrayList<Integer> listC = new ArrayList<Integer>();
		listC.add(100);
		listC.add(200);
		System.out.println(listC);//[100,200]
		
		
		int num = listC.get(1);
		System.out.println("第1号元素是:"+ num);
		}
		}
		

练习题:
第一题:
生成6个1~33之间的随机整数,添加到集合,并遍历集合。

import java.util.ArrayList;
import java.util.Random;

public class Demo05ArrayListRandom {
	
	public static void main(String[]args){
		ArrayList<Integer> list = new ArrayList<Integer>(); 
		
		Random r = new Random();
		for(int i = 0; i < 6; i++){
			int num = r.nextInt(33) + 1;
			list.add(num);
		}
		//遍历集合
		for(int i = 0; i < list.size(); i++){
			System.out.println(list.get(i));
		}
	}

}

在集合当中存储自己定义的对象

第二题:
自定义4个学生对象,添加到集合,并遍历

思路:
1,要学生对象,就应该现有学生类,自定义Student学生类,四个部分:
一个标准的类,1,所以的成员变量都用private,2,要有无参构造,3,有全参构造,4,get. set
2,创建一个集合,用来存储学生对象,泛型:
3,根据类,创建4个学生对象,并且赋值,
4,将4个学生对象添加到集合当中。add
5,遍历集合:for , size, get

首先创建一个学生类

public class Student {
	
	private String name;
	private int age;
	
	public Student(){
		
	}
	public Student(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;
	}
	

}

在创建集合

import java.util.ArrayList;
ublic class Demo02ArrayListStudent {
	public static void main(String[] args){
		ArrayList<Student> list = new ArrayList<Student>();
		
		Student one = new Student("洪七公", 20);
		Student two = new Student("欧阳锋", 21);
		Student three = new Student("黄药师", 22);
		Student four = new Student("段智兴", 23);
		
		
		list.add(one);
		list.add(two);
		list.add(three);
		list.add(four);
		
		
		//遍历集合
		for(int i = 0; i < list.size(); i++){
			Student stu = list.get(i);
			System.out.println("姓名:" + stu.getName() + ". 年龄" + stu.getAge());
		}
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值