黑马集合
集合
package com.itheima.array;
import com.itheima.domain.student;
public class test {
public static void main(String[] args) {
//动态初始化一个student的数组长度为三
student[] arr = new student[3];
student stu1 = new student("丁真",25);
student stu2 = new student("谷爱凌",26);
student stu3 = new student("何同学",27);
arr[0] = stu1;
arr[1] = stu2;
arr[2] = stu3;
for (int i = 0; i < arr.length; i++) {
student temp = arr[i];
System.out.println(temp.getName()+"...."+temp.getAge());
}
}
}
使用集合的话可以使存储空间变化
package com.itheima.list;
import java.util.ArrayList;
public class demo {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("abc");
//使用add方法可以添加任何数据
ArrayList<String>list1 = new ArrayList<>();
//和c++容器一样的用法需要指定存储的数据类型是什么样的
list.add(0, "111");
//在指定的索引位置添加元素
}
}
package com.itheima.list;
import java.util.ArrayList;
public class demo02 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("111");
list.add("222");
list.add("333");
list.add("000");
list.add("gjk");
String s = list.get(0);
//返回指定位置的元素
int size = list.size();
//返回的是容器的元素的个数
}
private static void textset() {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("111");
list.add("222");
list.add("333");
list.add("000");
list.add("gjk");
list.set(1, "skf");//修改指定位置的元素返回的是被修改的元素
}
private static void testremove() {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("111");
list.add("222");
list.add("333");
list.add("000");
list.add("gjk");
boolean b1 = list.remove("abc");
//删除指定元素返回是否删除成功
list.remove(0);
//根据索引进行删除数据返回的是被删除的数据
}
}
集合遍历的时候可以使用get方法进行遍历
删除容器中的重复元素
package com.itheima.list;
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("张三");
list.add("test");
list.add("test");
list.add("test");
list.add("test");
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
if (s.equals("test")) {
list.remove(i);
i--;
//加i--是因为删除之后后面的元素会向前面移动因此要i--以免错过要删除的元素
}
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
找出年龄低于18的学生并存入新的集合中,返回新的集合
package com.itheima.list;
import com.itheima.domain.student;
import java.util.ArrayList;
public class test02 {
public static void main(String[] args) {
ArrayList<student> students = new ArrayList<>();
student stu1 = new student("顶真", 6);
student stu2 = new student("怪零", 28);
student stu3 = new student("何同学", 27);
students.add(stu1);
students.add(stu2);
students.add(stu3);
ArrayList<student> stuinfo = getlist(students);
for (int i = 0; i < stuinfo.size(); i++) {
System.out.println(stuinfo.get(i).getName());
}
}
public static ArrayList<student> getlist(ArrayList<student> list) {
//方法内部创建新的集合用于存储年龄小于十八岁的学生
ArrayList<student> newlist = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
student stu = list.get(i);
if (stu.getAge() < 18) {
newlist.add(stu);
}
}
return newlist;
}
}
非常经典的学生管理系统
package com.itheima.test;
import com.itheima.domain.Student;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManger {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//创建容器存放学生对象
ArrayList<Student> list = new ArrayList<>();
lo:
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("请输入你的选择:");
String choice = sc.next();
switch (choice) {
case "1":
//System.out.println("添加学生");
addStudent(list);
break;
case "2":
//System.out.println("删除学生");
deletestudent(list);
break;
case "3":
//System.out.println("修改学生");]
updatestudent(list);
break;
case "4":
//System.out.println("查看学生");
QueryStudent(list);
break;
case "5":
System.out.println("感谢你的使用");
break lo;
default:
System.out.println("您的输入有误");
break;
}
}
}
public static void updatestudent(ArrayList<Student> list) {
System.out.println("请输入你要修改的学号");
//2.键盘接受你要删除的学号
Scanner sc = new Scanner(System.in);
String updatesid = sc.next();
//3.调用getindex方法,查找该学号在集合中出现的索引位置
int index = getIndex(list, updatesid);
if (index == -1) {
System.out.println("查无信息,请重新输入");
} else {
//接受新的学生信息:
System.out.println("请输入新的学生姓名");
String name = sc.next();
System.out.println("请输入新的学生年龄");
int age = sc.nextInt();
System.out.println("请输入新的学生生日");
String birthday = sc.next();
Student stu = new Student(updatesid, name, age, birthday);
list.set(index, stu);
}
}
public static void deletestudent(ArrayList<Student> list) {
//1.给出提示信息你要删除的学号
System.out.println("请输入你要删除的学号");
//2.键盘接受你要删除的学号
Scanner sc = new Scanner(System.in);
String deletesid = sc.next();
//3.调用getindex方法,查找该学号在集合中出现的索引位置
int index = getIndex(list, deletesid);
//4.根据索引判断,学号在集合中是否存在
if (index == -1) {
System.out.println("查无信息,请重新输入");
} else {
list.remove(index);
System.out.println("删除成功");
}
//存在:删除
//不存在:给出提示的信息
}
public static void QueryStudent(ArrayList<Student> list) {
//1.判断集合中是否存在数据如果不存在给出提示信息
//2.存在信息的话直接展示表头信息
//3.遍历集合获取每一个学生的信息打印出来
if (list.size() == 0) {
System.out.println("无信息,请添加信息之后在进行查询");
return;
}
System.out.println("学号\t姓名\t年龄\t生日");
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday());
}
}
//添加学生的方法
public static void addStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
//1.给出提示信息
String sid;
while (true) {
System.out.println("请输入学号");
sid = sc.next();
int index = getIndex(list, sid);
if (index == -1) {
//学号不存在可以使用
break;
}
}
System.out.println("请输入姓名");
String name = sc.next();
System.out.println("请输入年龄");
int age = sc.nextInt();
System.out.println("请输入生日");
String birthday = sc.next();
//2.将键盘录入的信息封装为学生对象
Student stu = new Student(sid, name, age, birthday);
//3.将封装好的学生信息添加到容器中
list.add(stu);
//4.给出添加成功的信息
System.out.println("添加学生成功");
}
public static int getIndex(ArrayList<Student> list, String sid) {
//1.假设传入的学号在集合中是不存在的
int index = -1;
//2.遍历集合获取每一个学生对象准备查找
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
//获取每一个学生对象的学号
String id = stu.getSid();
//使用获取的学号和传入的学号进行比对
if (id.equals(sid)) {
index = i;
}
}
return index;
}
}

浙公网安备 33010602011771号