3.2 ArrayList集合

1.集合:

是一个长度可变的容器(自动扩容)

2.集合存储数组数据类型的特点:

1. 可以存储引用数据类型
2. 如果要存储基本数据类型,就要先把其变成对应的包装类才可以存储

3.集合和数组的对比

1.长度:数组的长度是固定的,集合的长度是可变的
2.存储类型:数组可以存基本数组类型和引用数据类型,集合只能存储引用数据类型,如果要存储基本数据类型,要先把其变成对应的包装类才可以存储

扩展:

泛型:限定集合中存储数据的类型

图片[1]-3.2 ArrayList集合-IT熊技术站

<>就是泛型,在<>内写上你要存储的数据类型

代码演示:

import java.util.ArrayList;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		//创建集合的对象  
		ArrayList<String> list = new ArrayList<String>();  
		//在JDK7以后,后面<>内的数据类型可以省略不写,但是<>不能省略不写  
		ArrayList<String> list1 = new ArrayList<>();  
		/*现在我们创建的是ArrayList的对象,而ArrayList是Java已经写好的类  
		这个类在底层做了一些处理,打印对象不是地址值,而是集合中存储数据的内容  
		在打印时会用[]把所有的内容进行包裹  
		*/  
		System.out.println(list1);  
	}  
}

图片[2]-3.2 ArrayList集合-IT熊技术站

ArrayList的成员方法:

图片[3]-3.2 ArrayList集合-IT熊技术站

代码演示:

import java.util.ArrayList;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		//创建集合的对象  
		ArrayList<String> list = new ArrayList<>();  
		//添加元素  
		boolean result = list.add("IT梦");  
		list.add("2023");  
		list.add("a");  
		list.add("b");  
		list.add("c");  
		//集合不管添加什么都是可以添加进去的,所以返回的都是true  
		System.out.println(result);  
		System.out.println(list);  
		//根据元素内容删除元素  
		boolean result1 = list.remove("IT梦");  
		//返回true或false表示是否被删除  
		System.out.println(result1);  
		System.out.println(list);  
		//根据索引删除元素  
		String s = list.remove(0);  
		//返回被删除的元素  
		System.out.println(s);  
		System.out.println(list);  
		//修改元素  
		String str = list.set(0, "d");  
		//返回原来的元素  
		System.out.println(str);  
		System.out.println(list);  
		//获取指定索引的元素  
		String s1 = list.get(2);  
		System.out.println(s1);  
		//获取集合的长度  
		int i = list.size();  
		System.out.println(i);  
	}  
}

图片[4]-3.2 ArrayList集合-IT熊技术站

基本数据类型对应的包装类:

图片[5]-3.2 ArrayList集合-IT熊技术站

练习:

1.集合的遍历

需求:定义一个集合,添加字符串,并进行遍历
遍历格式:[元素1, 元素2, 元素3]

答案:

[content_hide]

import java.util.ArrayList;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		ArrayList<String> list = new ArrayList<>();  
		list.add("IT梦");  
		list.add("2023");  
		list.add("abc");  
		System.out.print("[");  
		for (int i = 0; i < list.size(); i++) {  
			if(i == list.size() - 1){  
				System.out.print(list.get(i));  
			}else {  
				System.out.print(list.get(i) + ", ");  
			}  
		}  
		System.out.println("]");  
	}  
}

图片[6]-3.2 ArrayList集合-IT熊技术站

[/content_hide]

2.添加数字并遍历

需求:定义一个集合,添加数字,并进行遍历
遍历格式:[元素1, 元素2, 元素3]

答案:

[content_hide]

import java.util.ArrayList;  

public class IT梦 {  
	public static void main(String[] args) {  
		ArrayList<Integer> list = new ArrayList<>();  
		list.add(1);  
		list.add(2);  
		list.add(3);  
		System.out.print("[");  
		for (int i = 0; i < list.size(); i++) {  
			if(i == list.size() - 1){  
				System.out.print(list.get(i));  
			}else {  
				System.out.print(list.get(i) + ", ");  
			}  
		}  
		System.out.println("]");  
	}  
}

图片[7]-3.2 ArrayList集合-IT熊技术站

[/content_hide]

3.添加学生对象并遍历

需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄

答案:

[content_hide]

import java.util.ArrayList;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		ArrayList<student> list = new ArrayList<>();  
		student s1 = new student("小明",18);  
		student s2 = new student("小李",19);  
		student s3 = new student("小亮",19);  
		list.add(s1);  
		list.add(s2);  
		list.add(s3);  
		for (int i = 0; i < list.size(); i++) {  
			student stu = list.get(i);  
			System.out.println(stu.getName() + ", " + stu.getAge());  
		}  
	}  
}

图片[8]-3.2 ArrayList集合-IT熊技术站

[/content_hide]

4.添加学生对象并遍历(升级版)

需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄
要求:对象的数据来自键盘录入

答案:

[content_hide]

import java.util.ArrayList;  
import java.util.Scanner;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		ArrayList<student> list = new ArrayList<>();  
		Scanner sc = new Scanner(System.in);  
		for (int i = 0; i < 3; i++) {  
			student s = new student();  
			System.out.println("请输入学生的姓名");  
			String name = sc.next();  
			System.out.println("请输入学生的年龄");  
			int age = sc.nextInt();  
			s.setName(name);  
			s.setAge(age);  
			list.add(s);  
		}  
		for (int i = 0; i < list.size(); i++) {  
			student stu = list.get(i);  
			System.out.println(stu.getName() + ", " + stu.getAge());  
		}  
	}  
}

图片[9]-3.2 ArrayList集合-IT熊技术站

[/content_hide]

5.添加用户对象并判断是否存在

1.需求:定义一个集合,存入三个用户对象
用户属性:id,username.password
2.定义一个方法,根据id查找对应的用户信息
如果存在返回true,如果不存在返回false

答案:

[content_hide]

import java.util.ArrayList;  
import java.util.Scanner;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		ArrayList<user> list = new ArrayList<>();  
		user u1 = new user(1,"小明","xiaoming123");  
		user u2 = new user(2,"小李","xiaoli123");  
		user u3 = new user(3,"小亮","xiaoliang123");  
		list.add(u1);  
		list.add(u2);  
		list.add(u3);  
		Scanner sc = new Scanner(System.in);  
		System.out.println("请输入你要查找的id");  
		int i = sc.nextInt();  
		boolean result = changeId(list,i);  
		System.out.println(result);  
	}  
	public static boolean changeId(ArrayList<user> list,int id){  
		for (int i = 0; i < list.size(); i++) {  
			user u = list.get(i);  
			if(u.getId() == id){  
				return true;  
			}  
		}  
		return false;  
	}  
}

图片[10]-3.2 ArrayList集合-IT熊技术站

图片[11]-3.2 ArrayList集合-IT熊技术站

[/content_hide]

6.添加手机对象并返回要求的数据

需求:定义javabean类:phone
phone属性:品牌,价格
定义一个集合,存入三个手机对象
分别为:小米,1000;苹果,8000;华为,2999
定义一个方法,将价格低于3000的手机信息返回

答案:

[content_hide]

import java.util.ArrayList;  
  
public class IT梦 {  
	public static void main(String[] args) {  
		ArrayList<phone> list = new ArrayList<>();  
		phone p1 = new phone("小米",1000);  
		phone p2 = new phone("苹果",8000);  
		phone p3 = new phone("华为",2999);  
		list.add(p1);  
		list.add(p2);  
		list.add(p3);  
		ArrayList<phone> phone = changePrice(list);  
		for (int i = 0; i < phone.size(); i++) {  
			phone p = phone.get(i);  
			System.out.println(p.getBrand() + ", " + p.getPrice());  
		}  
	}  
	//技巧:如果我门要返回多个数据,可以把这些数据先放到一个容器中,再把容器返回  
	public static ArrayList<phone> changePrice(ArrayList<phone> list){  
		ArrayList<phone> resultList = new ArrayList<>();  
		for (int i = 0; i < list.size(); i++) {  
			phone p = list.get(i);  
			if(p.getPrice() < 3000){  
				resultList.add(p);  
			}  
		}  
		return resultList;  
	}  
}

图片[12]-3.2 ArrayList集合-IT熊技术站

[/content_hide]

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容