1.ArrayList

集合和数组的区别 :

共同点:都是存储数据的容器

不同点:数组的容量是固定的,集合的容量是可变的

1.1 -ArrayList的构造方法和添加方法

public ArrayList() 创建一个空的集合对象
public boolean add(E e) 将指定的元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素

ArrayList<E> :

可调整大小的数组实现

<E> : 是一种特殊的数据类型,泛型。

怎么用呢 ?

在出现E的地方我们使用引用数据类型替换即可

举例:ArrayList<String>, ArrayList<Student>

1.2ArrayList类常用方法【应用】

成员方法 :

public boolean remove(Object o) 删除指定的元素,返回删除是否成功
public E remove(int index) 删除指定索引处的元素,返回被删除的元素
public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中的元素的个数

示例代码 :

public class ArrayListDemo02 {
   public static void main(String[] args) {
       //创建集合
       ArrayList<String> array = new ArrayList<String>();

       //添加元素
       array.add("hello");
       array.add("world");
       array.add("java");

       //public boolean remove(Object o):删除指定的元素,返回删除是否成功
//       System.out.println(array.remove("world"));
//       System.out.println(array.remove("javaee"));

       //public E remove(int index):删除指定索引处的元素,返回被删除的元素
//       System.out.println(array.remove(1));

       //IndexOutOfBoundsException
//       System.out.println(array.remove(3));

       //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
//       System.out.println(array.set(1,"javaee"));

       //IndexOutOfBoundsException
//       System.out.println(array.set(3,"javaee"));

       //public E get(int index):返回指定索引处的元素
//       System.out.println(array.get(0));
//       System.out.println(array.get(1));
//       System.out.println(array.get(2));
       //System.out.println(array.get(3)); //?????? 自己测试

       //public int size():返回集合中的元素的个数
       System.out.println(array.size());

       //输出集合
       System.out.println("array:" + array);
  }
}

1.3 ArrayList存储字符串并遍历

案例需求 :

创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合

实现步骤 :

1:创建集合对象 2:往集合中添加字符串对象 3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现 4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现 5:遍历集合的通用格式

代码实现 :

/*
   思路:
       1:创建集合对象
       2:往集合中添加字符串对象
       3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现
       4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
       5:遍历集合的通用格式
*/
public class ArrayListTest01 {
   public static void main(String[] args) {
       //创建集合对象
       ArrayList<String> array = new ArrayList<String>();

       //往集合中添加字符串对象
       array.add("刘正风");
       array.add("左冷禅");
       array.add("风清扬");

       //遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
//       System.out.println(array.size());

       //遍历集合的通用格式
       for(int i=0; i<array.size(); i++) {
           String s = array.get(i);
           System.out.println(s);
      }
  }
}

1.4 ArrayList存储学生对象并遍历

案例需求 :

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

实现步骤 :

1:定义学生类

2:创建集合对象

3:创建学生对象

4:添加学生对象到集合中

5:遍历集合,采用通用遍历格式实现

代码实现 :

/*
   思路:
       1:定义学生类
       2:创建集合对象
       3:创建学生对象
       4:添加学生对象到集合中
       5:遍历集合,采用通用遍历格式实现
*/
public class ArrayListTest02 {
   public static void main(String[] args) {
       //创建集合对象
       ArrayList<Student> array = new ArrayList<>();

       //创建学生对象
       Student s1 = new Student("林青霞", 30);
       Student s2 = new Student("风清扬", 33);
       Student s3 = new Student("张曼玉", 18);

       //添加学生对象到集合中
       array.add(s1);
       array.add(s2);
       array.add(s3);

       //遍历集合,采用通用遍历格式实现
       for (int i = 0; i < array.size(); i++) {
           Student s = array.get(i);
           System.out.println(s.getName() + "," + s.getAge());
      }
  }
}

1.5 键盘录入学生信息到集合

案例需求 :

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

学生的姓名和年龄来自于键盘录入

实现步骤 :

1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型

2:创建集合对象

3:键盘录入学生对象所需要的数据

4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量

5:往集合中添加学生对象

6:遍历集合,采用通用遍历格式实现

代码实现 :

/*
   思路:
       1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
       2:创建集合对象
       3:键盘录入学生对象所需要的数据
       4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
       5:往集合中添加学生对象
       6:遍历集合,采用通用遍历格式实现
*/
public class ArrayListTest {
   public static void main(String[] args) {
       //创建集合对象
       ArrayList<Student> array = new ArrayList<Student>();

       //为了提高代码的复用性,我们用方法来改进程序
       addStudent(array);
       addStudent(array);
       addStudent(array);

       //遍历集合,采用通用遍历格式实现
       for (int i = 0; i < array.size(); i++) {
           Student s = array.get(i);
           System.out.println(s.getName() + "," + s.getAge());
      }
  }

   /*
       两个明确:
           返回值类型:void
           参数:ArrayList<Student> array
    */
   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);
  }
}

2. 学生管理系统

2.1 学生管理系统实现步骤

  • 案例需求

    针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:

    添加学生:通过键盘录入学生信息,添加到集合中

    删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除

    修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改

    查看学生:将集合中的学生对象信息进行展示

    退出系统:结束程序

  • 实现步骤

    1. 定义学生类,包含以下成员变量

      学生类: Student成员变量:

      学号:sid

      姓名:name

      年龄:age

      生日:birthday

      构造方法:

      无参构造

      带四个参数的构造成员方法:

      每个成员变量对应给出get/set方法

    2. 学生管理系统主界面的搭建步骤

      2.1 用输出语句完成主界面的编写

      2.2 用Scanner实现键盘录入数据

      2.3 用switch语句完成操作的选择

      2.4 用循环完成再次回到主界面

    3. 学生管理系统的添加学生功能实现步骤

      3.1 用键盘录入选择添加学生

      3.2 定义一个方法,用于添加学生

      显示提示信息,提示要输入何种信息

      键盘录入学生对象所需要的数据

      创建学生对象,把键盘录入的数据赋值给学生对象的成员变量

      将学生对象添加到集合中(保存)

      给出添加成功提示

      3.3 调用方法

    4. 学生管理系统的查看学生功能实现步骤

      4.1 用键盘录入选择查看所有学生信息

      4.2 定义一个方法,用于查看学生信息

      显示表头信息

      将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”

      4.3 调用方法

    5. 学生管理系统的删除学生功能实现步骤

      5.1 用键盘录入选择删除学生信息

      5.2 定义一个方法,用于删除学生信息

      显示提示信息

      键盘录入要删除的学生学号

      调用getIndex方法,查找该学号在集合的索引

      如果索引为-1,提示信息不存在

      如果索引不是-1,调用remove方法删除并提示删除成功

      5.3 调用方法

    6. 学生管理系统的修改学生功能实现步骤

      6.1 用键盘录入选择修改学生信息

      6.2 定义一个方法,用于修改学生信息

      显示提示信息

      键盘录入要修改的学生学号

      调用getIndex方法,查找该学号在集合的索引

      如果索引为-1,提示信息不存在

      如果索引不是-1,键盘录入要修改的学生信息

      集合修改对应的学生信息

      给出修改成功提示

      6.3 调用方法

    7. 退出系统

      使用System.exit(0);退出JVM

2.2 学生类的定义

package com.itheima.domain;

public class Student {
   private String sid; // 学号
   private String name; // 姓名
   private int age; // 年龄
   private String birthday; // 生日

   public Student() {
  }

   public Student(String sid, String name, int age, String birthday) {
       this.sid = sid;
       this.name = name;
       this.age = age;
       this.birthday = birthday;
  }

   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 int getAge() {
       return age;
  }

   public void setAge(int age) {
       this.age = age;
  }

   public String getBirthday() {
       return birthday;
  }

   public void setBirthday(String birthday) {
       this.birthday = birthday;
  }
}

2.3 测试类的定义

package test.TestStudent;

import domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
//搭建列表
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Student> list = new ArrayList<>();

l:
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("添加学生");
getAddStudent(list);
break;
case "2":
//System.out.println("删除学生");
DeleteStudent(list);
break;
case "3":

SetStudent(list);
break;
case "4":
//System.out.println("查看学生");
queryStudent(list);
break;
case "5":
System.out.println("感谢您的使用");
break l;
//return;
default:
System.out.println("你的输入有误!");
break;
}
}
}

//修改学生
public static void SetStudent(ArrayList<Student> list) {
System.out.println("请输入你要修改的学号:");
Scanner sc = new Scanner(System.in);
String oldSid = sc.next();
int index = getindex(list, oldSid);
if (index == -1) {
System.out.println("查无此人!");
} else {
System.out.println("请输入新姓名:");
String newName = sc.next();
System.out.println("请输入新年龄:");
int newAge = sc.nextInt();
System.out.println("请输入新生日:");
String newBirt = sc.next();
Student stu = new Student(oldSid, newName, newAge, newBirt);
list.set(index, stu);
System.out.println("修改成功!");
}
}
//删除学生
public static void DeleteStudent(ArrayList<Student> list) {
//1.给出提示信息(请输入你要删除的学号)
System.out.println("请输入你要删除的学生学号:");
Scanner sc = new Scanner(System.in);
//2.键盘接收要删除的学号
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 int getindex(ArrayList<Student> list, String sid) {
//1.假设传入的学号在数据中不存在

//2.遍历集合,获取每一个学生对象,准备进行查找
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
String sid1 = stu.getSid();
if (sid.equals(sid1) == true) {
return i;
}
}
return -1;
//3.获取每一个学生对象的学号
}
//查看学生方法
public static void queryStudent(ArrayList<Student> list) {
//1.判断集合中是否存在数据,如果不存在给出信息
//2.存在:展示表头数据
//3.遍历集合,获取每一个学生对象信息打印在控制台
if (list.size() == 0) {
System.out.println("无信息,请添加后重新查询!");
return;
}
System.out.println("学号\t\t姓名\t\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\t" +
stu.getBirt());
}

}
//添加学生方法
public static ArrayList<Student> getAddStudent(ArrayList<Student> list) {
//1.给出录入提示;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入学号:");
String sid = sc.next();
int index = getindex(list, sid);
if (index == -1) {
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println("请输入生日:");
String birthdy = sc.next();
//2.将键盘录入数据封装为学生对象;
Student stu = new Student(sid, name, age, birthdy);
//3.将封装对象添加到集合;
list.add(stu);
//4.给出添加成功提示;
System.out.println("添加成功!");
break;
} else {
System.out.println("学号已被占用,请重新输入!");
}

}
return list;

}
}


java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,的更多相关文章

  1. C# 数据操作系列 - 15 SqlSugar 增删改查详解

    0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的 ...

  2. iOS CoreData 增删改查详解

    最近在学习CoreData, 因为项目开发中需要,特意学习和整理了一下,整理出来方便以后使用和同行借鉴.目前开发使用的Swift语言开发的项目.所以整理出来的是Swift版本,OC我就放弃了. 虽然S ...

  3. 【ASP.NET MVC】jqGrid 增删改查详解

    1   概述 本篇文章主要是关于JqGrid的,主要功能包括使用JqGrid增删查改,导入导出,废话不多说,直接进入正题. 2   Demo相关 2.1   Demo展示 第一部分 第二部分 2.2 ...

  4. sed 增删改查详解以及 sed -i原理

    我为什么要详细记录sed命令:     sed 擅长取行.工作中三剑客使用频率最高,本篇文章将对sed命令常用的 增,删,改,查 进行详细讲解,以备以后工作中遗忘了查询,sed命令是作为运维人员来说, ...

  5. Yii2.0数据库操作增删改查详解

    1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average():  ...

  6. Easyui datagrid扩展子网格detailview增删改查详解

    话不多gang,先上代码,将以下三个属性插入主网格的初始化参数中: view : detailview, //1 detailFormatter : function(index, row) { // ...

  7. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  8. Java通过JDBC进行简单的增删改查(以MySQL为例)

    Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...

  9. Hadoop基础-HDFS的API实现增删改查

    Hadoop基础-HDFS的API实现增删改查 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客开发IDE使用的是Idea,如果没有安装Idea软件的可以去下载安装,如何安装 ...

随机推荐

  1. 学习django笔记一:在urls.py中导入sign应用views文件的问题

    >python-admin startproject guest     #创建guest项目 >python3 manage.py startapp sign  #在guest项目中创建 ...

  2. 肝了一周的 UDP 基础知识终于出来了。

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 已提交此篇文章 运输层位于应用层和网络层之间,是 O ...

  3. 【干货】linux使用nginx一个80端口部署多个项目(spring boot、vue、nuxt、微信小程序)

    本人只有一个阿里云的ip和一个已经解析过的域名,然后想用80端口部署多个项目,比如输入: www.a.com和www.b.com与www.c.com就能访问不同项目,而不用输入不同端口号区分. 1.这 ...

  4. 【ACwing 100】InDec序列——差分

    (题面来自AcWing) 给定一个长度为 n 的数列 a1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样, ...

  5. HTML 和CSS

    1 HTML 介绍1.1 web 服务本质import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080))sk.lis ...

  6. springboot补充

    springboot中的日志: 在默认的spring-boot-starter中,会引入spring-boot-starter-logging, 而springboot-starte-longing中 ...

  7. springsecurity+springsocial资料收集

    https://blog.csdn.net/tryandfight/article/details/80524573 https://niocoder.com/2018/01/09/Spring-Se ...

  8. 冰河开源了全网首个完全开源的分布式全局有序序列号(分布式ID)框架!!

    写在前面 mykit-serial框架的设计参考了李艳鹏大佬开源的vesta框架,并彻底重构了vesta框架,借鉴了雪花算法(SnowFlake)的思想,并在此基础上进行了全面升级和优化.支持嵌入式( ...

  9. PyQt(Python+Qt)学习随笔:gridLayout的layoutRowStretch和layoutColumnStretch属性

    Qt Designer中网格布局中,layoutRowStretch和layoutColumnStretch两个属性分别设置网格布局中行之间和列之间的拉伸因子,如图: 但是QGridLayout并没有 ...

  10. [ASIS 2019]Unicorn shop

    点击进去之后是一个购买独角兽的界面,有四种类型的独角兽,前三种的价格比较便宜,最后的独角兽价格比较贵. 我们先尝试购买前三种独角兽,输入id,然后price输入9 然后就告诉我商品错了,可能复现靶场这 ...