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("修改学生信息成功"); } }