集合的概念及练习
1. 为什么要有集合?
1.集合存储长度不固定,数组长度固定
2.存储数据类型,数组可以存储基本数据类型和引用数据类型。
集合可以存储引用数据类型,当要存储基本数据类型时,要转化为包装类
2. 集合
ArrayList 类
创建类: ArrayList<String> list = new ArrayList<>();
方法名:
Bollean add(E e) 添加元素,返回值表述是否添加成功
根据删除元素值,或者索引值进行删除
Bollean 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 ArrayListDemo1 {
public static void main(String[] args) {
//1.创建集合的对象
//泛型:限定集合中存储数据的类型
//JDK7以前
//ArrayList<String> list = new ArrayList<String>();
//JDK7以后
ArrayList<String> list = new ArrayList<>();
//打印对象不是地址值,而是集合中存储数据内容
//在展示的时候会拿[]把所有的数据进行包裹
System.out.println(list);
//1.添加元素
list.add("Hello");
list.add("He");
list.add("Hel");
System.out.println(list);
//2.删除元素
list.remove("He");
System.out.println(list);
list.remove(0);
System.out.println(list);
//3.修改元素
String result = list.set(0,"bbb");
System.out.println(result);
System.out.println(list);
//4.查询元素
String s = list.get(0);
System.out.println(s);
//5.遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
3. 集合的综合练习
3.1 添加字符串和整数并遍历
需求:定义一个集合,添加字符串,并进行遍历
遍历格式参照:[元素1,元素2,元素3]
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
/*
需求:定义一个集合,添加字符串,并进行遍历
遍历格式参照:[元素1,元素2,元素3]
*/
//1.创建集合
ArrayList<String> list = new ArrayList<>();
//2.添加元素
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
//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.print("]");
}
}
需求:定义一个集合,添加数字,并进行遍历
遍历格式参照:[元素1,元素2,元素3]
基本数据类型对应的包装类
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
import java.util.ArrayList;
public class ArrayListDemo3 {
public static void main(String[] args) {
/*
需求:定义一个集合,添加数字,并进行遍历
遍历格式参照:[元素1,元素2,元素3]
*/
//1.定义集合
ArrayList<Integer> list = new ArrayList<>();
//2.添加元素
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//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.print("]");
}
}
3.2 添加学生对象并遍历
import java.util.ArrayList;
public class ArrayListDemo4 {
public static void main(String[] args) {
/*
需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄。
*/
//1.创建集合
ArrayList<Student> list = new ArrayList<>();
//2.创建学生对象
Student s1 = new Student("jam",12);
Student s2 = new Student("jane",18);
Student s3 = new Student("bug",22);
//3.添加学生对象
list.add(s1);
list.add(s2);
list.add(s3);
//4.遍历集合
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getName() + ", " + stu.getAge());
}
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListDemo5 {
public static void main(String[] args) {
/*
需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄。
要求:对象的数据来自键盘输入
*/
//1.创建集合
ArrayList<Student> list = new ArrayList<>();
//长度为0
//键盘录入信息
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
Student s = new Student();
System.out.println("请输入学生姓名:");
String name = sc.next();
s.setName(name);
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
s.setAge(age);
//将学生信息添加到集合中
list.add(s);
}
//输出学生信息
System.out.println("学生信息如下:");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
}
3.3 添加用户对象并判断是否存在
import java.util.ArrayList;
public class ArrayListDemo6 {
public static void main(String[] args) {
/*
需求:1.main方法中定义一个结合,存入三个用户对象
用户属性为:id,username,password
要求:定义一个方法,根据id查找对应的用户信息
如果存在,返回true
如果不存在,返回false
*/
//1.创建集合
ArrayList<User> list = new ArrayList<>();
//2.创建用户
User u1 = new User("001","heima","123456");
User u2 = new User("002","heim","12345678");
User u3 = new User("003","hei","123qwe");
//3.将用户添加到集合中
list.add(u1);
list.add(u2);
list.add(u3);
//4.调用方法,检查id是否存在
boolean flag = contains(list,"001");
System.out.println(flag);
}
//创建方法,查找是否有对应ID
public static Boolean contains(ArrayList<User> list, String id) {
for (int i = 0; i < list.size(); i++) {
if(id.equals(list.get(i).getId())){
return true;
}
}
return false;
}
}
3.4 返回多个数据
import java.util.ArrayList;
public class ArrayListDemo7 {
public static void main(String[] args) {
/*
需求:
定义JAVAbean类:Phone
Phone属性:品牌,价格
main方法中定义一个集合,存入三个手机对象
定义一个方法,将价格低于3000的手机信息返回。
*/
//1.创建集合
ArrayList<Phone> list = new ArrayList<>();
//2.创建手机对象
Phone p1 = new Phone("iphone",9999);
Phone p2 = new Phone("vivo",2999);
Phone p3 = new Phone("xiaomi",1999);
//3.将对象,添加到集合中
list.add(p1);
list.add(p2);
list.add(p3);
//4.调用方法
ArrayList<Phone> result = getPhoneInfo(list);
for (int i = 0; i < result.size(); i++) {
Phone p = result.get(i);
System.out.println(p.getBrand() + "," + p.getPrice());
}
}
//创建方法,寻找价格低于3000的手机对象并返回
//如果我们要返回多个数据,可以把这些书库先放到一个容器当中,再把容器返回
//容器:集合,数组。像比较集合更适合当作容器
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
ArrayList<Phone> result = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Phone p = list.get(i);
int price = p.getPrice();
if(price < 3000){
result.add(p);
}
}
return result;
}
}