Java基础07——集合
- 一、集合和数组的对比
- 二、ArrayList成员方法
- 三、集合练习
-
- 1. 添加数字并遍历
- 2. 添加学生对象并遍历
-
- 3. 添加用户对象并判断是否存在
-
- 4. 添加手机对象并返回要求的数据(返回多个数据)
-
一、集合和数组的对比
- 长度:
-
-
- 存储类型:
-
-
- 集合:可以存引用数据类型,基本数据类型需要包装类才能存
基本数据类型 |
包装类 |
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;
}
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;
}
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;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMm() {
return 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;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return 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;
}
}
输出结果