练习1:
定义一个集合,添加字符串,并进行遍历
遍历格式:[元素1,元素2]
代码如下:
import java.lang.reflect.Array;
import java.util.ArrayList;
public class test1 {
public static void main(String[] args) {
//创建集合
ArrayList<String> list = new ArrayList<>();
//添加元素
list.add("你");
list.add("好");
list.add("呀");
//遍历
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("]");
}
}
println在输出完内容后有个回车,而print没有
练习2:
需求:定义一个集合,添加数字,并进行遍历
格式:[元素1,元素2]
集合是无法存储基本数据类型的,如何解决,用到包装类,即创建对象时,byte写其包装类Byte,一般是第一个字母大写,特殊的是char写成Character、int写成integer
import java.util.ArrayList;
public class test2 {
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("]");
}
}
练习3:
需求:定义一个集合,添加学生对象,并进行遍历
学生属性:姓名,年龄
import java.util.ArrayList;
public class student1 {
//标准Javabean要求:
//1、私有化成员变量
//2、空参构造方法
//3、带全部参数的构造方法
//4、get/set方法
private String name;
private int age;
//Ctrl+D向下复制一行
public student1() {
}
public student1(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 class test3 {
public static void main(String[] args) {
//创建集合
ArrayList<student1> list = new ArrayList<>();//结构体类型
//创造学生对象
student1 s1=new student1("zhangsan",21);
student1 s2=new student1("humin",20);
student1 s3=new student1("lihua",19);
//添加元素
list.add(s1);
list.add(s2);
list.add(s3);
//遍历
for (int i = 0; i < list.size(); i++) {
student1 stu=list.get(i);
System.out.println(stu.getName()+","+ stu.getAge());
}
}
}
练习4(含两个细节):
需求:定义一个集合,用键盘添加学生对象,并进行遍历
学生属性:姓名,年龄
代码如下:
import 集合_arraylist练习3.student1;
import java.util.ArrayList;
import java.util.Scanner;
public class test4 {
public static void main(String[] args) {
//创建集合
ArrayList<student1> list = new ArrayList<>();//结构体类型
Scanner sc = new Scanner(System.in);//键盘录入学生信息并添加到集合当中
for (int i = 0; i < 3; i++) {
student1 s=new student1();
System.out.println("请输入学生姓名");
String name=sc.next();
System.out.println("请输入学生年龄");
int age= sc.nextInt();
//将name和age赋给学生对象
s.setName(name);
s.setAge(age);
//将学生对象添加到集合当中
list.add(s);
}
//遍历输出
for (int i = 0; i < list.size(); i++) {
student1 stu=list.get(i);
System.out.println(stu.getName()+","+ stu.getAge());
}
}
}
细节1:上述代码第12行,代码循环条件是i<3,为什么不是 i < list.size(),因为此时集合没存东西,长度为零,所以此for循环无法执行。
细节2:第13行不能写在12行之前,这样会导致输出结果是3个一样的信息,因为写在外面,只创建了一个对象,输入的三个数据共用同一对象地址,导致上一个数据会被现在的数据覆盖,从而输出的三个数据都是最后一个数据。
练习5:
需求:定义一个集合,存入三个用户对象
用户属性:id,username,password
要求:定义一个方法,根据id查找对应用户信息。存在,返回true;不存在,返回false。
import java.util.ArrayList;
public class test5 {
public static void main(String[] args) {
ArrayList<user> list = new ArrayList<>();
user u1=new user("001","lihua","123567");
user u2=new user("002","zhansan","98437892");
user u3=new user("003","lisi","42525");
list.add(u1);
list.add(u2);
list.add(u3);
boolean flag=contains(list,"001");
System.out.println(flag);
}
//创建方法查询(方法建立:要干什么、需要什么、要返回值吗)
public static boolean contains(ArrayList<user> list ,String id){
for (int i = 0; i < list.size(); i++) {
user u=list.get(i);
String uid=u.getId();
if(uid.equals(id)){
return true;
}
}
//比较完后还是没有一样的
return false;
}
}
public class user {
private String id;
private String username;
private String mi_ma;
public user() {
}
public user(String id, String username, String mi_ma) {
this.id = id;
this.username = username;
this.mi_ma = mi_ma;
}
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 getMi_ma() {
return mi_ma;
}
public void setMi_ma(String mi_ma) {
this.mi_ma = mi_ma;
}
}
练习6:
需求:定义phone类,
属性:品牌,价格
要求:定义一个方法,将价格低于3000的手机信息返回
package 集合_arraylist练习6;
import 集合_arraylist练习5.user;
import java.util.ArrayList;
public class test6 {
public static void main(String[] args) {
ArrayList<phone> list = new ArrayList<>();
phone p1=new phone("小米",1200);
phone p2=new phone("苹果",5500);
phone p3=new phone("锤子",2300);
list.add(p1);
list.add(p2);
list.add(p3);
ArrayList<phone> poneinlist=getphone(list);
for (int i = 0; i < poneinlist.size(); i++) {
phone phone=poneinlist.get(i);
System.out.println(phone.getName()+","+phone.getJiage());
}
}
public static ArrayList<phone> getphone(ArrayList<phone> list){
//用于存储价格低于3000的手机对象
ArrayList<phone> resultlist = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
phone p=list.get(i);
int price=p.getJiage();
if(price<3000){
resultlist.add(p);
}
}
return resultlist;
}
}
class phone{
private String name;
private int jiage;
public phone() {
}
public phone(String name, int jiage) {
this.name = name;
this.jiage = jiage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getJiage() {
return jiage;
}
public void setJiage(int jiage) {
this.jiage = jiage;
}
}
如果需要返回多个数据,可以把这些数据放到一个容器中,放回容器。