集合:
为什么出现集合?
-
为了方便对对象的操作,需要对对象存储
-
StringBuilder的结果只能是一个字符串类型,不一定满足我们的要求
-
数组的长度是固定的,适应不了长度变化的需求
集合类的特点:长度可变
ArrayList
-
大小可变数组的实现
-
<E>:是一种特殊的数据类型,泛型。 在出现E的地方我们使用引用数据类型替换即可 举例:ArrayList<String>或ArrayList<Student>
构造方法
-
ArrayList()
添加元素
-
public boolean add(E e):添加元素
-
public void add(int index,E element):指定索引处,添加元素
package com.it02;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建集合对象
ArrayList<String> arr = new ArrayList<String>();
//添加元素
arr.add("hello");
arr.add("world");
arr.add("java");
arr.add(1,"android");
//
System.out.println("array:"+arr);
}
}
集合中的其他方法
ArrayList的其他方法
获取元素
-
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):修改制定索引的元素,返回被修改的元素
package com.it02;
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arr = new ArrayList<String>();
//添加
arr.add("hello");
arr.add("world");
arr.add("java");
//获取
System.out.println("arr:"+arr.get(0));
System.out.println("arr:"+arr.get(1));
System.out.println("arr:"+arr.get(2));
//返回集合的个数
System.out.println("arr:"+arr.size());
//删除元素
System.out.println("arr:"+arr.remove("world"));
System.out.println("arr:"+arr.remove(1));
//修改元素
System.out.println("arr:"+arr);
System.out.println("arr:"+arr.set(0, "android"));
System.out.println("arr:"+arr);
}
}
集合例題-存儲字符串並遍歷
package com.it03;
import java.util.ArrayList;
/*
* 存储字符串并遍历
* 1-创建集合
* 2-添加字符串
* 3-遍历
*/
public class ArrayListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arr = new ArrayList<String>();
//添加元素
arr.add("张三丰");
arr.add("张无忌");
arr.add("谢逊");
arr.add("周芷若");
arr.add("成昆");
arr.add("宋远桥");
arr.add("张翠山");
arr.add("张学良");
browse(arr);
}
public static void browse(ArrayList<String> arr) {
for (int x=0;x<arr.size();x++) {
String s = arr.get(x);
if(s.startsWith("张")) {
System.out.println(s);
}
}
}
}
對對象進行遍歷
package com.it03;
import java.util.ArrayList;
/*
* 遍历对象
*/
public class ArrayListTest1 {
public static void main(String[] args) {
ArrayList<Student> arr = new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("wang",20);
Student s2 = new Student("li",22);
Student s3 = new Student("zhang",24);
Student s4 = new Student("cai",26);
arr.add(s1);
arr.add(s2);
arr.add(s3);
arr.add(s4);
for (int x=0;x<arr.size();x++) {
Student s=arr.get(x);
System.out.println(s.getName()+"-----"+s.getAge());
}
}
}
創建集合,存儲學生對象,最後遍歷輸出
package com.it04;
import java.util.ArrayList;
import java.util.Scanner;
/*
* 创建一个集合,存储学生对象,学生对象的数据来自于键盘录入,最后遍历集合
* 为了方便实用,把学生类中的所有成员定义为String类型
* 1-定义学生类
* 2-创建集合对象
* 3-键盘录入对象
* 4-把学生对象作为元素存储到集合
*
*/
public class StudentDemo {
public static void main(String[] args) {
//开始创建集合对象
ArrayList<Student> arr = new ArrayList<Student>();
//调用方法
addStudent(arr);
addStudent(arr);
addStudent(arr);
//遍历集合
for(int x=0;x<arr.size();x++) {
Student s =arr.get(x);
System.out.println(s.getName()+"----"+s.getAge());
}
}
//提高代码的复用性,创建方法实现创建学生对象集合
public static void addStudent(ArrayList<Student> arr){
//键盘录入数据创建学生对象
Scanner sc= new Scanner(System.in);
//System.out.println("请输入学生的信息");
System.out.println("请输入学生姓名:");
String name =sc.nextLine();
System.out.println("请输入学生年龄:");
String age =sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
arr.add(s);
}
}
簡單的學生管理小程序
1-定義學生類
2-主界面
3-查看學生代碼
4-添加學生代碼
5-刪除學生代碼
6-修改學生代碼
學生類如下:
package com.it05;
/*
* 标准的学生类
*
*/
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student() {
//super();
// TODO Auto-generated constructor stub
}
public Student(String id, String name, String age, String address) {
//super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
主要的代碼如下
package com.it05;
import java.util.ArrayList;
import java.util.Scanner;
import com.it05.Student;
public class StudentMangerTest {
//为了让程序回到主界面,使用循环
public static void main(String[] args) {
//创建集合对象,用于存储学生对象
ArrayList<Student> arr = 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);
String choiceString = sc.nextLine();
//用switch语句
switch(choiceString) {
case "1":
//查看学生
findAllStudent(arr);
break;
case "2":
//添加学生
addStudent(arr);
break;
case "3":
//删除学生
deletdStudent( arr);
break;
case "4":
//修改学生
updateStudent(arr);
break;
case "5":
//退出
//System.out.println("谢谢你的使用");
//break;
default:
System.out.println("谢谢你的使用");
//退出程序
System.exit(0);
break;
}
}
}
public static void findAllStudent(ArrayList<Student> arr){
//遍历
//首先判断集合是否有数据
if(arr.size()>0) {
System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"住处");
for(int x=0;x<arr.size();x++) {
Student s =arr.get(x);
System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
}
}else {
System.out.println("不好意思,没有数据存在,请重新选择");
//return;
}
}
public static void addStudent(ArrayList<Student> arr) {
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 为了让id被访问到
String id;
// 循环
while (true) {
// System.out.println("请输入学生的信息");
System.out.println("请输入学生学号:");
id = sc.nextLine();
boolean flag = false;
// 判断学号有没有被占用
for (int x = 0; x < arr.size(); x++) {
Student s = arr.get(x);
// 进行学号比较
if (s.getId().equals(id)) {
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 addr = sc.nextLine();
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(addr);
// 添加集合操作时需要注意
arr.add(s);
System.out.println("添加成功");
}
//删除
public static void deletdStudent(ArrayList<Student> arr) {
// 根据学号删除学生
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除学生的学号:");
String id = sc.nextLine();
// 遍历
int index = -1;
for (int x = 0; x < arr.size(); x++) {
Student s = arr.get(x);
if (s.getId().equals(id)) {
index = x;
break;
}
}
if (index == -1) {
System.out.println("用户不存在");
} else {
arr.remove(index);
System.out.println("成功");
}
}
public static void updateStudent(ArrayList<Student> arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改学生的学号:");
String id = sc.nextLine();
int index = -1;
for (int x = 0; x < arr.size(); x++) {
Student s = arr.get(x);
if (s.getId().equals(id)) {
index = x;
break;
}
}
if (index == -1) {
System.out.println("用户不存在");
} else {
//修改
System.out.println("请输入学生新姓名:");
String name = sc.nextLine();
System.out.println("请输入学生新年龄:");
String age = sc.nextLine();
System.out.println("请输入学生新住处:");
String addr = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
s.setAddress(addr);
arr.set(index, s);
System.out.println("修改成功");
}
}
}