2023.3.2--java基础语法学习day11--集合
1.集合
数组存储基本数据类型和引用数据类型,集合是不能存基数据类型 |
集合自动扩容 |
数组长度固定,集合长度可变 |
(1)集合--增删查改
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
//创建集合的对象
//泛型:限定集合中存储数据的类型
ArrayList<String> list=new ArrayList<>();
System.out.println(list);
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println(list);
//删除元素
boolean result=list.remove("aaa");
System.out.println(result);
System.out.println(list);
//根据索引删除元素
String str=list.remove(0);
System.out.println(str);
System.out.println(list);
//修改元素
String result1=list.set(0,"ddd");//把ddd交给0索引上的元素
System.out.println(result1);
System.out.println(list);
//查询元素
String s= list.get(0);
System.out.println(s);
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
//i 索引
//list get(i)元
}
}
(2)集合--添加字符串和整数并遍历
import java.util.ArrayList;
/**集合
* 定义一个集合,添加字符串,并进行遍历
* 定义一个集合,添加数字,并进行遍历
*
*/
public class Test2 {
public static void main(String[] args) {
//创建集合
ArrayList<String> list=new ArrayList<>();
//添加元素
list.add("点赞了吗");
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("]");
ArrayList<Integer> list1=new ArrayList<>();
//添加元素
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);
System.out.print("[");
for (int i = 0; i < list1.size(); i++) {
if(i!= list1.size()-1)
{
System.out.print(list1.get(i)+",");
}
else
{
System.out.print(list1.get(i));
}
}
System.out.println("]");
}
}
(3)集合--查找用户是否存在
import java.util.ArrayList;
import java.util.Scanner;
/**
* 查找用户是否存在
* main 方法中定义一个集合,存入三个用户对象,对象属性:id,username,password
* 定义一个方法根据id查找用户信息,存在返回true,不存在返回false
*/
public class Test5 {
public static void main(String[] args) {
//1.创建集合
ArrayList<User> list=new ArrayList<>();
//2.创建对象
Scanner scanner=new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户的id、用户名、密码");
String id= scanner.next();
String username= scanner.next();
int password= scanner.nextInt();
User user=new User(id,username,password);
list.add(user);
}
for (int i = 0; i < list.size(); i++) {
User user=list.get(i);
System.out.println(user.getId()+","+user.getUsername()+","+user.getPassword());
}
System.out.println();
boolean user1 = isUser(list);
System.out.println(user1);
}
// public static boolean isUser(ArrayList<User> list,String id) {
// Scanner scanner = new Scanner(System.in);
// for (int i = 0; i < list.size(); i++) {
// System.out.println("请输入你想要查找的用户id:");
// User user = list.get(i);
// String uid = scanner.next();
// if (uid.equals(id)) {
// return true;
// }
// }
// return false;
// }
public static boolean isUser(ArrayList<User> list) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < list.size(); i++) {
System.out.println("请输入你想要查找的用户id:");
User user = list.get(i);
String uid = scanner.next();
if (uid.equals(list.get(i).getId())) {
return true;
}
}
return false;
}
}
(4)集合--返回多个数据
import java.util.ArrayList;
/**集合
*定义Javabean类:phone
* phone的属性:品牌,价格
*main方法中定义一个集合存入三个三个手机对象,分别为小米1000,苹果8000,锤子2999
* 定义一个方法将价格低于3000的手机信息返回
*/
public class Test6 {
public static void main(String[] args) {
//1.创建集合
ArrayList<Phone>list=new ArrayList<>();
//2.创建对象
Phone phone1=new Phone("小米",1000);
Phone phone2=new Phone("苹果",8000);
Phone phone3=new Phone("锤子",2999);
//3.添加对象
list.add(phone1);
list.add(phone2);
list.add(phone3);
//4.调用方法
ArrayList<Phone> phoneInfolist=getPhone(list);
//遍历集合
for (int i = 0; i < phoneInfolist.size(); i++) {
Phone phone=phoneInfolist.get(i);
System.out.println(phone.getBrand()+","+ phone.getPrice());
}
}
//如果想要返回多个数据,可以先将这些数据放在一个容器中
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.getPrice();
if(price<3000)
{
resultlist.add(p);
}
}
return resultlist;
}
}
(5)综合训练--学生管理系统
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
while (true) {
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("请输入你的选择:");
Scanner scanner = new Scanner(System.in);
String choose = scanner.next();
switch (choose) {
case "1": //case后面跟的是要和表达式进行比较的值,只能是等值判定,而不是范围判定
addStudent(list);
case "2":
deleteStudent(list);
case "3":
changeStudent(list);
case "4":
selectStudent(list);
case "5":
System.out.println("退出");
//break loop; //表示从loop这个循环跳出
System.exit(0);//停止虚拟机运行
default:
System.out.println("没有这个选项");
}
}
}
//功能1:添加学生
public static void addStudent (ArrayList<Student> list) {
System.out.println("---------------------------添加学生--------------------------");
//利用空参构造创建学生对象
Student s = new Student();
String id = null;
while (true) { //快捷键ctrl+shift+t ---->循环包裹
Scanner scanner = new Scanner(System.in);
//String id = null;
System.out.println("请输入学生的id");
id = scanner.next();
boolean flag = contains(list, id);//调用contains方法
if (flag) {
System.out.println("id已经存在,请重新录入");
} else {
System.out.println("你输入的id不存在,可以用");s.setId(id);
break;
}
System.out.println("请输入学生的姓名");
String name = scanner.next();
s.setName(name);
System.out.println("请输入学生的年龄");
int age = scanner.nextInt();
s.setAge(age);
System.out.println("请输入学生的家庭住址");
String address = scanner.next();
s.setAddress(address);
//创建学生对象
Student student = new Student(id, name, age, address);
//把学生对象添加到集合中
list.add(student);
//提示添加成功
System.out.println("学生信息添加成功");
}
}
//功能2:删除学生
public static void deleteStudent (ArrayList<Student> list) {
System.out.println("---------------------------删除学生--------------------------");
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要删除的id");
String id= scanner.next();
//查询id在集合中的索引
int index=getIndex(list ,id);
//对index进行判断,大于等于0,表示存在,直接删除,如果是-1,就表示不存在,结束方法,回到初始菜单
if (index>=0)
{
list.remove(index);//通过索引直接删除
System.out.println("id 为"+id+"的学生删除成功");
}else
{
System.out.println("id不存在,删除失败");
}
}
//功能3:修改学生
public static void changeStudent (ArrayList<Student> list) {
System.out.println("---------------------------修改学生---------------------------");
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要修改的学生id");
String id= scanner.next();
int index=getIndex(list,id);
if(index==-1)
{
System.out.println("要修改的id"+id+"不存在,请重新修改");
return;
}
Student stu = list.get(index);
//修改学生姓名
System.out.println("请输入要修改的学生姓名");
String newname= scanner.next();
stu.setName(newname);//把newname传递过去
System.out.println("请输入要修改的学生年龄");
int newage= scanner.nextInt();
stu.setAge(newage);//把newname传递过去
System.out.println("请输入要修改的学生地址");
String newaddress= scanner.next();
stu.setAddress(newaddress);
System.out.println("学生信息修改成功");
}
//功能4:查询学生
public static void selectStudent (ArrayList<Student> list) {
System.out.println("---------------------------查询学生---------------------------");
if (list.size() == 0) {
System.out.println("当前无学生信息,请添加后再查询");
return;
}
//打印表头信息
System.out.println("id\t姓名\t年龄\t家庭住址");
//当代码执行到这里的时候,表示集合中是有数据的
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i); //得到当中的每一个学生对象
System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getAge() + "\t" + student.getAddress());
}
}
//功能5:判断id在集合中是否存在
public static boolean contains(ArrayList<Student>list,String id)
{
//循环遍历集合得到里面的每一个学生对象,拿到学生对象后,获取id进行判断,如果有返回结果TRUE,如果结果没有返回false
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
String sid=stu.getId();
if(sid.equals(id))
{
return true;
}
}
return false;//循环结束后都没有找到,返回false
}
//功能6:通过id获取索引
public static int getIndex(ArrayList<Student>list,String id){
//遍历集合
for (int i = 0; i < list.size(); i++) {
//得到每一个学生对象
Student stu = list.get(i);
//得到每一个学生对象的id
String sid=stu.getId();
//集合中的id与要删除的id作比较
if(sid.equals(id))
{
return i;//如果id相同,返回i索引
}
}
return -1;
}
}
CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天最佳新人】榜单,全部的排名请看 https://bbs.csdn.net/topics/613557167。