集合和数组对比
- 数组不能改变长度,集合可以自动扩容。
- 数组可以存储基本数据类型或引用数据类型;集合只能存引用数据类型,如果要存基本数据类型,则需要改为包装类。
ArrayList
- 创建集合的方法:ArrayList< String > list = new ArrayList<>();
<>中的String是泛型举例,用于限定集合中存储数据的类型。只能是引用数据类型。
打印时,打印的不是地址值,而是数据内容,且默认用[]将数据内容框起来。 - 成员方法:增、删、改、查
集合的遍历方式
- 定义一个集合
- 利用add添加元素
- 遍历方式和数组遍历方式一样或者直接打印集合也行
package com.oop.arrayListDemo08;
import java.util.ArrayList;
/**
*@PackageName:com.oop.arrayListDemo08
*@ClassName:travelseArrayList
*@Description:定义一个集合,添加字符串,并按照格式遍历
*@author soso
*@date 2024/9/2211:15
*/
public class travelseArrayList {
public static void main(String[] args) {
//1. 定义一个集合
ArrayList<String> list = new ArrayList<>();
//2. 利用add添加元素
list.add("A");
list.add("B");
list.add("C");
//3. 遍历方式和数组遍历方式一样或者直接打印集合也行
System.out.println(list);
}
}
结果图:
在集合中添加数字
由于是基本数据类型,故需要先变成包装类
即在泛型中放入上述包装类后就可以直接添加基本数据类型了
如何添加自己定义的对象
在泛型中放入自己定义的类的名称,添加时直接添加对象即可。
此时直接打印集合元素时打印的是地址值,需要利用自己定义的类中的构造方法获取内容再打印。
- 由于集合的长度可以发生变化,所以当集合没有内容时,list.size()获得的是零
添加用户对象并判断是否存在
- 定义一个集合
- 定义三个用户对象,先创建用户类
- 集合中添加用户对象
- 输入集合,需要查找的id
输出布尔值
判断是否有相同的id,有则打印出来
主方法类:
package com.oop.arrayListDemo08.findUser;
import java.util.ArrayList;
/**
* @author soso
* @PackageName:com.oop.arrayListDemo08.findUser
* @ClassName:Main
* @Description:
* @date 2024/9/2211:41
*/
public class Main {
public static void main(String[] args) {
//1. 定义一个集合
ArrayList<User> list = new ArrayList<>();
//2. 定义三个用户对象,先创建用户类
User user1 = new User(1,"soso1","soso123");
User user2 = new User(2,"soso2","soso123");
User user3 = new User(3,"soso3","soso123");
//3. 集合中添加用户对象
list.add(user1);
list.add(user2);
list.add(user3);
//4. 输入集合,需要查找的id
System.out.println(tellUser(list,5));
}
//4.
public static boolean tellUser(ArrayList<User> list, int index) {
// 4.1 输出布尔值
// 4.2 判断是否有相同的id,有则打印出来
int userIndex = getIndex(list,index);
return userIndex != -1;
}
//4.2
public static int getIndex(ArrayList<User> list, int index) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId() == index) {
return i;
}
}
return -1;
}
}
用户类:
package com.oop.arrayListDemo08.findUser;
/**
* @author soso
* @PackageName:com.oop.arrayListDemo08.findUser
* @ClassName:User
* @Description:
* @date 2024/9/2211:40
*/
public class User {
private int id;
private String userName;
private String password ;
public User(int id, String userName, String password) {
this.id = id;
this.userName = userName;
this.password = password;
}
public User(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
添加手机对象并返回多个数据
- 如果要返回多个数据,则可以用一个容器(如集合或数组)返回,再把容器返回
- 定义手机类,属性是品牌和价格
- 创建集合和对象
- 给集合添加对象
- 创建方法,输入手机集合,返回价格小于3000的手机信息集合
- 把价格低于3000的手机信息打印
package com.oop.arrayListDemo08.getPhoneInfo;
import java.util.ArrayList;
/**
* @author soso
* @PackageName:com.oop.arrayListDemo08.getPhoneInfo
* @ClassName:getPhoneInfo
* @Description:用集合存储手机信息,并将价格处于3000以下的手机信息打印
* @date 2024/9/2214:53
*/
public class getPhoneInfo {
public static void main(String[] args) {
//1. 定义手机类,属性是品牌和价格
//2. 创建集合和对象
Phone phone = new Phone();
ArrayList<Phone> list = new ArrayList<>();
Phone phone1 = new Phone("苹果",5999);
Phone phone2 = new Phone("小米",1999);
Phone phone3 = new Phone("华为",4999);
//3. 给集合添加对象
list.add(phone1);
list.add(phone2);
list.add(phone3);
//4. 创建方法,输入手机集合,返回价格小于3000的手机信息集合
ArrayList<Phone> phones = getPhoneInfo(list,3000);
//5. 把价格低于3000的手机信息打印
System.out.println("价格小于3000的手机有:");
for (Phone p : phones) {
System.out.println(p.getBrand()+","+p.getPrice());
}
}
//4.
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> phoneList, int num) {
ArrayList<Phone> phones = new ArrayList<>();
for (Phone phone : phoneList) {
if (phone.getPrice() < num) {
phones.add(phone);
}
}
return phones;
}
}
结果图: