上图是集合框架的结构图,ArrayList和LinkedList均继承自List类,都是线性结构,在具体使用上,在访问和遍历方式上均相同,不同点在于ArrayList是线性顺序结构,类似数组;LinkedList则是线性链表结构。以下是Demo,由于linkedList在本Demo的使用方式上与ArrayList相同,故Demo只做了ArrayList。上图来自:https://www.runoob.com/java/java-collections.html
public class MainClass {
public static void main(String[] args) {
// TODO 自动生成的方法存根
MarshalClass list = new MarshalClass();
list.addStudent("张三", 15, "男");
list.addStudent("李四", 16, "男");
list.addStudent("王五", 17, "女");
//查询所有学生
list.queryAllStudent();
//list.updateStudentName("张三", "Tom");
//list.deleteStudent("张三");
//list.queryAllStudent();
}
}
import java.util.ArrayList;
import java.util.Iterator;
public class MarshalClass extends ArrayList {
//增加一名学生
public void addStudent(String name,int age,String sex){
Student stu = new Student(name,age,sex);
this.add(stu);
}
//删除某个姓名的学生
public void deleteStudent(String name){
for (int i=0;i<this.size();i++){
Student stu = (Student)this.get(i);
if (stu.getName().equals(name)){
this.remove(i);
}
}
}
//使用迭代器遍历列表
public void deleteStudentNew(String name){
Iterator it = this.iterator();
while (it.hasNext()){
Student stu = (Student) it.next();
if (stu.getName().equals(name)){
this.remove(stu);
}
}
}
//更新学生姓名
public void updateStudentName(String oldName,String NewName){
for (int i=0;i<this.size();i++){
Student stu = (Student)this.get(i);
if ( stu.getName().equals(oldName)){
stu.setName(NewName);
}
}
}
//更新学生年龄
public void updateStudentAge(String Name,int age){
for (int i=0;i<this.size();i++){
Student stu = (Student)this.get(i);
if ( stu.getName().equals(Name)){
stu.setAge(age);
}
}
}
//查询所有学生
public void queryAllStudent(){
for (int i=0;i<this.size();i++){
Student stu = (Student)this.get(i);
System.out.println(String.format("姓名: %s,年龄: %d,性别: %s", stu.getName(),stu.getAge(),stu.getSex()));
}
}
//更新学生性别
public void updateStudentSex(String Name,String sex){
for (int i=0;i<this.size();i++){
Student stu = (Student)this.get(i);
if ( stu.getName().equals(Name)){
stu.setSex(sex);
}
}
}
}
//学生类
class Student {
private String name;
private int Age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Student(String name,int age,String sex){
super();
setName(name);
setAge(age);
setSex(sex);
}
}
如果想避免经常性的强制类型转换和不必要的错误,建议使用泛型。