Java基础07——集合
一、集合和数组的对比
- 长度:
- 数组:长度固定
- 集合:长度可变
- 存储类型:
- 数组:可以存基本数据类型和引用数据类型
- 集合:可以存引用数据类型,基本数据类型需要包装类才能存
| 基本数据类型 | 包装类 |
|---|---|
| byte | Byte |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
二、ArrayList成员方法
- 打印ArrayList实例,输出的是集合中存储的数据内容,不是地址值。
- E代表范型,限定集合中存储数据的类型。
| 方法名 | 说明 |
|---|---|
| boolean add(E e) | 添加元素,返回值代表是否添加成功 |
| boolean remove(E e) | 删除置顶元素,返回值代表是否删除成功 |
| E remove(int index) | 删除指定索引的元素,返回被删除元素 |
| E set(int index, E e) | 修改指定索引下的元素,返回原来的元素 |
| E get(int index) | 获取指定索引的元素 |
| int size() | 集合的长度,集合中元素的个数 |
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
// 创建一个集合
ArrayList<String> list = new ArrayList<>();
// 添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println(list);
// 删除元素
list.remove("aaa");
System.out.println(list);
list.remove(0);
System.out.println(list);
// 修改元素
list.set(0, "000");
System.out.println(list);
// 查询元素
String s = list.get(0);
System.out.println(s);
// 获取长度
int size = list.size();
System.out.println(size);
// 遍历
System.out.println("-----遍历-----");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}

三、集合练习
1. 添加数字并遍历
- 需求:定义一个集合,添加数字,并进行遍历。
import java.util.ArrayList;
public class ArrayListTest2 {
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("]");
}
}

2. 添加学生对象并遍历
- 需求:定义一个集合,键盘录入一些学生对象,并进行遍历。
- 学生类的属性为:姓名,年龄。
学生类
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student{name = " + name + ", age = " + age + "}";
}
}
测试类
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest2 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
Student s = new Student();
System.out.println("请输入学生姓名");
String name = scanner.next();
System.out.println("请输入学生年龄");
int age = scanner.nextInt();
s.setName(name);
s.setAge(age);
list.add(s);
}
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
System.out.println(student.getName() + ", " + student.getAge());
}
}
}
输出结果

3. 添加用户对象并判断是否存在
- 需求:
- main方法中定义一个集合,存入三个用户对象。用户属性为:id,username,password
- 定义一个方法,根据id查找对应的用户信息,如果存在返回 索引,如果没有返回-1。
用户类
public class User {
private String id;
private String username;
private String mm;
public User() {
}
public User(String id, String username, String mm) {
this.id = id;
this.username = username;
this.mm = mm;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @return username
*/
public String getUsername() {
return username;
}
/**
* 设置
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取
* @return password
*/
public String getMm() {
return mm;
}
/**
* 设置
* @param mm
*/
public void setMm(String mm) {
this.mm = mm;
}
public String toString() {
return "User{id = " + id + ", username = " + username + ", mm = " + mm + "}";
}
}
测试类
import java.util.ArrayList;
public class UserTest {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
User u1 = new User("001", "zs", "123456");
User u2 = new User("002", "ls", "12345678");
User u3 = new User("003", "ww", "1234qwer");
list.add(u1);
list.add(u2);
list.add(u3);
int index = getIndex(list, "002");
System.out.println("索引是:" + index);
}
public static int getIndex(ArrayList<User> list, String id) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)) {
return i;
}
}
return -1;
}
}
输出结果

4. 添加手机对象并返回要求的数据(返回多个数据)
- 需求:定义一个手机类,属性为:品牌、价格。
- main方法中定义一个集合,存入三个手机对象,分别为:小米,1000;苹果,8000;锤子,2999。
- 定义一个方法,将价格低于3000的手机信息返回。
- 如果要返回多个数据,可以把这些数据放到一个容器当中,再把容器返回。
手机类
public class Phone {
private String brand;
private int price;
public Phone() {
}
public Phone(String brand, int price) {
this.brand = brand;
this.price = price;
}
/**
* 获取
* @return brand
*/
public String getBrand() {
return brand;
}
/**
* 设置
* @param brand
*/
public void setBrand(String brand) {
this.brand = brand;
}
/**
* 获取
* @return price
*/
public int getPrice() {
return price;
}
/**
* 设置
* @param price
*/
public void setPrice(int price) {
this.price = price;
}
public String toString() {
return "Phone{brand = " + brand + ", price = " + price + "}";
}
}
测试类
import java.util.ArrayList;
public class PhoneTest {
public static void main(String[] args) {
ArrayList<Phone> list = new ArrayList<>();
Phone xiaomi = new Phone("小米", 1000);
Phone apple = new Phone("苹果", 8000);
Phone hammer = new Phone("锤子", 2999);
list.add(xiaomi);
list.add(apple);
list.add(hammer);
ArrayList<Phone> phoneInfoList = getPhoneInfo(list);
System.out.println("小于3000的手机有:");
for (int i = 0; i < phoneInfoList.size(); i++) {
Phone phone = phoneInfoList.get(i);
System.out.println(phone.toString());
}
}
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
ArrayList<Phone> resultList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Phone phone = list.get(i);
if (phone.getPrice() < 3000) {
resultList.add(phone);
}
}
return resultList;
}
}
输出结果

版权声明:本文为realoser原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。