苦学Java笔记(day11)

一、集合

1.集合和数组的对比

(1)长度

数组长度固定;
集合长度可变。

(2)存储类型

数组既可以存引用数据类型,也可以存基本数据类型;
集合能存引用数据类型,不能存基本数据类型,除非把基本数据类型变成包装类,才可以存储。

2.ArrayList

(1)导包

import java.util.ArrayList;

(2)泛型

可以是引用数据类型,不能是基本数据类型。

//JDK7以前
ArrayList<String> list = new ArrayList<String>();
//JDK7以后
ArrayList<String> list = new ArrayList<>();

(3)打印

System.out.println(list);

创建的是ArrayList的对象,ArrayList是Java已经写好的一个类,这个类在底层做了一些处理:
打印对象不是地址值,而是集合中存储的数据内容,并且会由[]括起来。

(4)成员方法

增删改查

方法名说明
boolean add(E e)添加元素,返回值表示是否添加成功
boolean remove(E e)删除指定元素,返回值表示是否删除成功
E remove(int index)删除指定索引的元素,返回被删除元素
E set(int index,E e)修改指定索引下的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,也就是集合中元素的个数
遍历

list.fori + 回车

for(int i = 0;i < list.size();i++){
	System.out.println(list.get(i));
}

(5)练习

集合的遍历方式

需求:定义一个集合,添加字符串,并进行遍历
遍历格式参照:[元素1,元素2,元素3]。

import java.util.ArrayList;
public class Demo1{
    public static void main(String[] args){
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");//思考:能不能键盘录入添加?
        list.add("bbb");
        list.add("ccc");
        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("]");
    }
}
添加数字并遍历
基本数据类型对应的包装类
byteByte
shortShort
charCharacter
intInteger
longLong
flostFloat
doubleDouble
booleanBoolean

需求:定义一个集合,添加数字,并进行遍历。
遍历格式参照:[元素1,元素2,元素3]。

import java.util.ArrayList;
public class Demo2{
    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("]");
    }
}
添加学生对象并遍历
基础

需求:定义一个集合,添加一些学生对象,并进行遍历。
学生类的属性为:姓名、年龄。

//JavaBean类
public class Student{
	private String name;
	private int age;
	public Student(){
	}
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	public static void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public static void setAge(int age){
		if(age > 0){
			this.age = age;
		}else{
			System.out.println("年龄输入错误");
		}
		public String getAge(){
		return age;
	}
	}
}
//测试类
import java.util.ArrayList;
public class StudentText{
    public static void main(String[] args){
        ArrayList<Student> list = new ArrayList<>();
        Student s1 = new Student("张三",23);
        Student s2 = new Student("李四",24);
        Student s3 = new Student("王五",25);
        list.add(s1);
        list.add(s2);
        list.add(s3);
        for(int i = 0;i < list.size();i++){
            System.out.println("姓名为:" + list.get(i).getName() + " 年龄为:" + list.get(i).getAge());
        }
    }
}
数据来自键盘录入
import java.util.ArrayList;
import java.util.Scanner;
public class StudentText{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        ArrayList<Student> list = new ArrayList<>();
        System.out.println("请输入待输入学生的个数");
        int n = sc.nextInt();
        for(int i = 0;i < n;i++) {
        /*先调用空参构造方法在循环中定义一个Student对象;
        再根据键盘录入的值,通过set方法对对象的成员变量进行赋值;
        最后把该对象添加到集合list中*/
            Student stu = new Student();
            /*不要把创建学生对象写在循环外面,
            不然,set方法赋值给的是同一个学生对象,
            add的也是同一个地址;
            要每循环一次,创建一个新的学生对象,才有不同的地址
            System.out.println("请输入姓名");
            stu.setName(sc.next());
            System.out.println("请输入年龄");
            stu.setAge(sc.nextInt());
            list.add(stu);
        }
        for(int i = 0;i < list.size();i++){
            System.out.println("姓名为:" + list.get(i).getName() + " 年龄为:" + list.get(i).getAge());
        }
    }
}
//注意:一开始集合中没有元素,长度为0,所以循环根本进不去
for(int i = 0;i < list.size();i++){
	Student s = new Student();
	list.add(s);
}
添加用户对象并判断是否存在
基础

需求:
1.main方法中定义一个集合,存入三个用户对象
用户属性:id、username、password
2.要求:定义一个方法,根据id查找对应的用户信息
如果存在,返回true
如果不存在,返回false

//JavaBean类
public class User{
	private String id;
	private String username;
	private String password;
	public User(){
	}
	public User(String id,String username,String password){
		this.id = id;
		this.username = username;
		this.password = password;
	}
	public void setId(String id){
		this.id = id;
	}
	public String getId(){
		return id;
	}
	public void setUsername(String username){
		this.username = username;
	}
	public String getUsername(){
		return username;
	}
	public void setPassword(String password){
		this.password = password;
	}
	public String getPassword(){
		return password;
	}
}
//测试类
import java.util.ArrayList;
import java.util.Scanner;
public class UserText{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        ArrayList<User> list = new ArrayList<>();
        User u1 = new User("1","张三","1234");
        User u2 = new User("2","李四","1234");
        User u3 = new User("3","王五","1234");
        list.add(u1);
        list.add(u2);
        list.add(u3);
        System.out.println("请输入待查找用户的ID");
        String id = sc.next();
        if(isUserExist(list,id)){
            System.out.println("该用户存在");
        }else {
            System.out.println("该用户不存在");
        }
    }
    public static boolean isUserExist(ArrayList<User> list,String id){
        for(int i = 0;i < list.size();i++){
            if(list.get(i).getId().equals(id)){
                return true;
            }
        }
        return false;
    }
}
变形

需求:
1.main方法中定义一个集合,存入三个用户对象
用户属性:id、username、password
2.要求:定义一个方法,根据id查找对应的用户信息
如果存在,返回索引
如果不存在,返回-1

//JavaBean类
public class User{
	private String id;
	private String username;
	private String password;
	public User(){
	}
	public User(String id,String username,String password){
		this.id = id;
		this.username = username;
		this.password = password;
	}
	public void setId(String id){
		this.id = id;
	}
	public String getId(){
		return id;
	}
	public void setUsername(String username){
		this.username = username;
	}
	public String getUsername(){
		return username;
	}
	public void setPassword(String password){
		this.password = password;
	}
	public String getPassword(){
		return password;
	}
}
//测试类
import java.util.ArrayList;
import java.util.Scanner;
public class UserText{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        ArrayList<User> list = new ArrayList<>();
        User u1 = new User("1","张三","1234");
        User u2 = new User("2","李四","1234");
        User u3 = new User("3","王五","1234");
        list.add(u1);
        list.add(u2);
        list.add(u3);
        System.out.println("请输入待查找用户的ID");
        String id = sc.next();
        int index = isUserExist(list,id);
        if(index != -1){
            System.out.println("用户ID:" + list.get(index).getId() + " 用户名:" + list.get(index).getUsername() + " 用户密码:" + list.get(index).getPassword());
        }else {
            System.out.println("该用户不存在");
        }
    }
    public static int isUserExist(ArrayList<User> list,String id){
        for(int i = 0;i < list.size();i++){
            if(list.get(i).getId().equals(id)){
                return i;
            }
        }
        return -1;
    }
}
添加手机对象并返回要求的数据

需求:
定义JavaBean类:Phone
Phone属性:品牌、价格
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 void setBrand(String brand){
		this.brand = brand;
	}
	public String getBrand(){
		return brand;
	}
	public void setPrice(int price){
		this.price = price;
	}
	public int getPrice(){
		return price;
	}
}
import java.util.ArrayList;
public class PhoneText{
    public static void main(String[] args){
        ArrayList<Phone> list = new ArrayList<>();
        Phone p1 = new Phone("小米",1000);
        Phone p2 = new Phone("苹果",8000);
        Phone p3 = new Phone("锤子",2999);
        list.add(p1);
        list.add(p2);
        list.add(p3);
        ArrayList<Phone> resultlist = search(list,3000);
        for (int i = 0; i < resultlist.size(); i++) {//不能直接打印集合
            System.out.println("品牌:" + resultlist.get(i).getBrand() + " 价格为:" + resultlist.get(i).getPrice()) ;
        }
    }
    public static ArrayList<Phone> search(ArrayList<Phone> list,int max){
        ArrayList<Phone> resultlist = new ArrayList<>();
        int count = 0;
        for(int i = 0;i < list.size();i++){
            if(list.get(i).getPrice() < 3000){
                resultlist.add(list.get(i));
            }
        }
        return resultlist;
    }
}

二、学生管理系统

1.需求

初始菜单:
“------------欢迎来到黑马学生管理系统------------”
“1:添加学生”
“2:删除学生”
“3:修改学生”
“4:查询学生”
“5:退出”
“请输入你的选择:”
学生类
属性:id、姓名、年龄、家庭住址
添加功能
键盘录入每一个学生信息并添加,需要满足一下要求:
id唯一
删除功能
键盘录入要删除的学生id,需要满足以下要求:
id存在删除
id不存在,需要提示不存在,并回到初始菜单
修改功能
打印所有的学生信息,需要满足以下要求:
如果没有学生信息,提示:当前无学生信息,请添加后再查询
查询功能
打印所有的学生信息,需要满足以下要求:
如果没有学生信息,提示:当前无学生信息,请添加后再查询
如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
heima001 张三 23 南京
heima002 李四 24 北京
heima003 王五 25 广州
heima004 赵六 26 深圳

2.代码实现

public class Student{
    private String id;
    private String name;
    private int age;
    private String address;
    public Student(){
    }
    public Student(String id,String name,int age,String address){
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }
    public void setId(String id){
        this.id = id;
    }
    public String getId(){
        return id;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        if(age > 0){
            this.age = age;
        }else {
            System.out.println("年龄输入错误");
        }
    }
    public int getAge(){
        return age;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getAddress(){
        return address;
    }
}
import java.util.ArrayList;
import java.util.Scanner;
public class StudentText{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        ArrayList<Student> list = new ArrayList<>();
        Student s1 = new Student("heima001","张三",23,"南京");
        Student s2 = new Student("heima002","李四",24,"北京");
        Student s3 = new Student("heima003","王五",25,"广州");
        Student s4 = new Student("heima004","赵六",26,"深圳");
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        String a;
        loop:while(true){//loop循环
            System.out.println("----------学生管理系统----------");
            System.out.println("------------------------------");
            System.out.println("---------1.添加学生信息---------");
            System.out.println("---------2.删除学生信息---------");
            System.out.println("---------3.修改学生信息---------");
            System.out.println("---------4.查询学生信息---------");
            System.out.println("---------5.退出----------------");
            System.out.println("------------------------------");
            System.out.println("---------请输入你的选择---------");
            a = sc.next();//(容错)当输入别的内容,不会报错
            switch(a){
                case "1" -> list = addStudent(list);
                case "2" -> list = deleteStudent(list);
                case "3" -> list = alterStudent(list);
                case "4" -> searchStudent(list);
                case "5" -> {
                    System.out.println("退出成功");
                    break loop;//跳出loop循环
                    //或者写:(相当于直接差掉IDEA)
                    //System.exit(0);
                }
                default -> System.out.println("没有这个选项");
            }
        }
    }
    public static ArrayList<Student> addStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入添加的学生个数");
        int n = sc.nextInt();
        for(int i = 0;i < n;i++) {
            Student s = new Student();
            System.out.println("请输入学生ID");
            String tmp = sc.next();
            if(isExist(list,tmp)){
                System.out.println("该学号已有,添加失败");
            } else{
                s.setId(tmp);
                System.out.println("请输入学生姓名");
                s.setName(sc.next());
                System.out.println("请输入学生年龄");
                s.setAge(sc.nextInt());
                System.out.println("请输入学生家庭住址");
                s.setAddress(sc.next());
                list.add(s);
                System.out.println("添加成功");
            }
        }
        return list;
    }
    public static ArrayList<Student> deleteStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生学号");
        String sid = sc.next();
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getId().equals(sid)){
                System.out.println("学号为" + sid + "的学生,姓名为:" + list.get(i).getName() + ",年龄为:" + list.get(i).getAge() + ",家庭住址为:" + list.get(i).getAddress());
                list.remove(i);
                System.out.println("删除成功");
                return list;
            }
        }
        System.out.println("该学生不存在");
        return list;
    }
    public static ArrayList<Student> alterStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生ID");
        String sid = sc.next();
        boolean flag = true;
        for(int i = 0;i <list.size();i++) {
            if(list.get(i).getId().equals(sid)){
                System.out.println("----------修改学生信息----------");
                System.out.println("------------------------------");
                System.out.println("-----------1.修改姓名----------");
                System.out.println("-----------2.修改年龄----------");
                System.out.println("-----------3.修改家庭住址-------");
                System.out.println("-----------4.退出修改-----------");
                System.out.println("------------------------------");
                System.out.println("---------请输入你的选择---------");
                switch(sc.next()){
                    case "1" -> {
                        System.out.println("请输入修改后的学生姓名");
                        String tmp = sc.next();
                        if(tmp.equals(list.get(i).getName())){
                            System.out.println("输入的年龄与已有年龄相同,修改失败");
                        } else{
                            list.get(i).setName(tmp);
                            System.out.println("修改成功");
                        }
                        flag = false;
                    }
                    case "2" -> {
                        System.out.println("请输入修改后的学生年龄");
                        int tmp = sc.nextInt();
                        if(tmp == list.get(i).getAge()){
                            System.out.println("输入的年龄与已有年龄相同,修改失败");
                        } else{
                            list.get(i).setAge(tmp);
                            System.out.println("修改成功");
                        }
                        flag = false;
                    }
                    case "3" -> {
                        System.out.println("请输入修改后的学生家庭住址");
                        String tmp = sc.next();
                        if(tmp.equals(list.get(i).getAddress())){
                            System.out.println("输入的家庭住址与已有家庭住址相同,修改失败");
                        } else{
                            list.get(i).setAddress(tmp);
                            System.out.println("修改成功");
                        }
                        flag = false;
                    }
                    case "4" -> {
                        System.out.println("回到了主菜单");
                        return list;
                    }
                    default -> {
                        System.out.println("没有该选项");
                        flag = false;
                    }
                }
            }
        }
        if(flag == true){
            System.out.println("该学生不存在");
        }
        return list;
    }
    public static void searchStudent(ArrayList<Student> list){
        if(list.size() == 0){
            System.out.println("当前无学生信息,请添加后再查询");
        } else{
            System.out.println("id" + "姓名" + "年龄" + "家庭住址" );
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).getId() + list.get(i).getName() + list.get(i).getAge() + list.get(i).getAddress());
            }
        }
    }
    public static boolean isExist(ArrayList<Student> list,String sid){
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(sid)) {
                return true;
            }
        }
        return false;
    }
}
  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值