java集合
练习1:创建一个学生数组,存储三个学生对象
1.定义学生类
2.创建学生数组
3.创建学生对象
4.把学生对象作为元素赋值给学生数组
5.遍历学生数组
自动生成构造方法:
代码区域右键—source–generate Constructor from superclass无参构造方法
代码区域右键—source—Generate Constructor using Fields 带参构造方法
自动生成getXxx()/setXxx():
代码区域右键—source–Generate Getters and Setters
public class Student {
private String name;//成员变量
private int age;
public Student() {//无参构造方法
}
public Student(String name, int age) {//带参构造方法
super();
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;
}
Student [] students=new Student[3];//创建学生数组
Student s1=new Student("刘备",30);//创建学生对象
Student s2=new Student("曹操",35);
Student s3=new Student("孙权",20);
students[0]=s1;//把学生对象作为元素赋值给学生数组
students[1]=s2;
students[2]=s3;
for(int i=0;i<students.length;i++) {//遍历学生数组
System.out.println(students[i].getName()+"---"+students[i].getAge());
}
为什么会出现集合类:
我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的
为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,就不能是一个基本的变量,而应该是一个容器类型的变量。
到目前为止,我们学习过了哪些容器类型的数据?StringBuilder<结果是字符串类型> 数组<长度固定适应不了变化的需求>
java提供了集合类供我们使用
集合类的特点:长度可变
创建集合对象
ArrayList array =new ArrayList();
ArrayList:
大小可变数组的实现
:是一种特殊的数据类型,泛型。
在出现E的地方我们使用引用数据类型替换即可
ArrayList,ArrayList
构造方法:
ArrayList()
添加元素:
public boolean add(E e):添加元素
public void add(int index, E element):在指定的索引处添加一个元素
//创建集合对象
ArrayList<String> array=new ArrayList<String>();
array.add("hello");
array.add("world");
array.add(1,"love");
System.out.println("array:"+array);
}
构造方法:
获取元素
public E get(int index):返回指定索引处的位置
集合长度:
public int size():返回集合中的元素个数
删除元素
public boolean remove(object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
修改元素
public E set(int index ,E element):修改指定索引处的元素,返回被修改的元素
ArrayList<String> array=new ArrayList<String>();//创建ArrayList对象
array.add("hello");
array.add("world");
array.add("java");
//public E get(int index):返回指定索引处的位置
System.out.println("get:"+array.get(0));
//public int size():返回集合中的元素个数
System.out.println("size:"+array.size());
//public boolean remove(object o):删除指定的元素,返回删除是否成功
System.out.println("remove:"+array.remove("hello"));
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
System.out.println("remove:"+array.remove(0));
//public E set(int index ,E element):修改指定索引处的元素,返回被修改的元素
System.out.println("set:"+array.set(0, "love"));
System.out.println("array:"+array);
ArrayList集合的遍历
最标准的用法<通过size 和get方法>
ArrayList<String> array=new ArrayList<String>();
array.add("hello");
array.add("world");
array.add("java");
for(int i=0;i<array.size();i++) {
String s=array.get(i);
System.out.println(s);
}
}
练习1:存储字符串遍历
1.创建集合对象
2.添加字符串元素
3.遍历集合
ArrayList<String> array=new ArrayList<String>();//1.创建集合对象
array.add("张翠山");
array.add("殷素素");
array.add("张无忌");
array.add("赵敏");
for(int i=0;i<array.size();i++) {
String s=array.get(i);
System.out.println(s);
}
练习2:给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”,“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有的张姓人员打到控制台
1.定义字符串数组
2.创建集合对象
3.遍历字符串数组,获取每个字符串元素
4.把获取到的字符串元素添加到集合
5.遍历集合
要判断每一个字符元素是否以“张”开头
String[] s1= {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};
ArrayList<String> array=new ArrayList<String>();
for(int i=0;i<s1.length;i++) {
array.add(s1[i]);
}
for(int j=0;j<array.size();j++) {
String s2=array.get(j);
if(s2.startsWith("张")) {
System.out.println(s2);
}
}
练习3:存储自定义对象并遍历
分析:1自定义学生类
2.创建集合对象
3.把学生对象作为元素添加到集合中
4遍历集合
ArrayList<Students> s1=new ArrayList<Students>();//创建集合对象
Students s2=new Students("张三",18);//创建学生对象
Students s3=new Students("王二",30);
Students s4=new Students("张无极",99);
Students s5=new Students("乔哈里斯",55);
s1.add(s2);
s1.add(s3);
s1.add(s4);
s1.add(s5);
for(int i=0;i<s1.size();i++) {
String name=s1.get(i).getName();
int age=s1.get(i).getAge();
System.out.println("学生姓名:"+name+"年龄"+age);}
练习4:键盘录入数据存储并遍历
1.定义 学生类
2创建集合对象
3.键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
4.遍历集合
ArrayList<Student> array=new ArrayList<Student>();//创建集合对象
addStudent(array);
addStudent(array);
addStudent(array);
for(int i=0;i<array.size();i++) {
Student s1=array.get(i);
System.out.println(s1.getName()+"---"+s1.getAge());
}
}
public static void addStudent(ArrayList<Student> array) {
Scanner sc=new Scanner(System.in);//键盘录入数据
System.out.println("请输入学生姓名:");
String name=sc.nextLine();
System.out.println("请输入学生年龄:");
String age=sc.nextLine();
Student s=new Student();
s.setName(name);
s.setAge(age);
array.add(s);
}
}
练习5:学生管理系统
public class Student {
private String sid;
private String name;
private String age;
private String livingPlace;
public Student() {
}
public Student(String sid, String name, String age, String livingPlace) {
this.sid = sid;
this.name = name;
this.age = age;
this.livingPlace = livingPlace;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getLivingPlace() {
return livingPlace;
}
public void setLivingPlace(String livingPlace) {
this.livingPlace = livingPlace;
}
ArrayList<Student> s1=new ArrayList<Student>();
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 sc=new Scanner(System.in);
int option=sc.nextInt();
switch (option) {
case 1:ViewStudents(s1);
break;
case 2:addStudents(s1);
break;
case 3:DeleteStudents(s1);
break;
case 4:SetStudents(s1);
break;
case 5:System.out.println("谢谢您的使用");
System.exit(0);//jvm退出
break;
}
}
}
public static void ViewStudents(ArrayList<Student> s1) {
if(s1.size()==0) {
System.out.println("学生管理系统内部信息为空,请先存储学生信息再查询");
return;
}
else {//\t是一个tab键的位置
System.out.println("学号\t\t姓名\t年龄\t居住地");
for(int i=0;i<s1.size();i++) {
Student ss=s1.get(i);
System.out.println(ss.getSid()+"\t"+ss.getName()+"\t"+ss.getAge()+"\t"+ss.getLivingPlace());
}
}
}
public static void addStudents(ArrayList<Student> s1) {
Scanner sc=new Scanner(System.in);
String sid;//为了让id被访问到
while(true) {
System.out.println("请输入学号:");
boolean flag=false;
sid=sc.nextLine();
for(int i=0;i<s1.size();i++) {
Student sss=s1.get(i);
if(sid.equals(sss.getSid())) {
flag=true;
break;
}
}
if (flag) {
System.out.println("您输入的学号已被注册,请重新输入其他学号");
}else {
break;
}
}
System.out.println("请输入学生姓名:");
String name=sc.nextLine();
System.out.println("请输入学生年龄:");
String age=sc.nextLine();
System.out.println("请输入所在居住地:");
String livingPlace=sc.nextLine();
Student s2=new Student();
s2.setSid(sid);
s2.setName(name);
s2.setAge(age);
s2.setLivingPlace(livingPlace);
s1.add(s2);
System.out.println("添加学生成功");
}
public static void DeleteStudents(ArrayList<Student> s1) {
System.out.println("请输入要删除学生学号:");
Scanner sc=new Scanner(System.in);
String sid=sc.nextLine();
for(int i=0;i<s1.size();i++) {
Student s3=s1.get(i);
if(sid.equals(s3.getSid())) {
s1.remove(i);
break;
}
}
System.out.println("删除学生成功");
}
public static void SetStudents(ArrayList<Student> s1) {
System.out.println("要修改学生的学号:");
Scanner sc=new Scanner(System.in);
String sid=sc.nextLine();
System.out.println("请输入新的姓名:");
String name=sc.nextLine();
System.out.println("请输入新的年龄:");
String age=sc.nextLine();
System.out.println("请输入新的居住地:");
String livingPlace=sc.nextLine();
for(int i=0;i<s1.size();i++) {
if(sid.equals(s1.get(i).getSid())) {
s1.get(i).setName(name);
s1.get(i).setAge(age);
s1.get(i).setLivingPlace(livingPlace);
}
}
System.out.println("修改学生信息成功");
}
}