当前位置: 首页 > news >正文

Java——集合基础

一、集合与数组的特点对比

1.集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

2.集合和数组的区别

  • 共同点:都是存储数据的容器
  • 不同点:数组的容量是固定的,集合的容量是可变的

3.如果存储的数据,长度经常发生改变,推荐使用集合。

二、ArrayList集合(集合的一种)(在java.util包下,使用时需要导包

(一)基础使用

1.public ArrayList()——构造一个初始容量为10的空列表

①格式

ArrayList<所要限制的类型> 对象名 = new ArrayList<>( );

②举例
public class text2 {public static void main(String[] args) {
//        创建一个对象list1,不限制存入的数据类型ArrayList list1 = new ArrayList<>();list1.add(111);list1.add("hello");System.out.println(list1);
//        创建一个对象list2,限制只能存入Integer类型数据ArrayList<Integer> list2 = new ArrayList<Integer>();list2.add(777);list2.add(888);System.out.println(list2);}
}
//结果
//[111, hello]
//[777, 888]
③注意
  • 集合容器如果没有加入<> 就可以存储任意数据类型
  • <>:对集合容器存储的数据类型进行限制,尖括号里面只能放引用数据类型,不能放基本数据类型

2.public Boolean add(E e) 、 public void add(int index,E element)——在集合中添加元素

①格式

对象名 . add (需要添加的数据);

#将指定的元素添加到列表的尾部

对象名 . add( index , 需要添加的数据)

#将指定的元素插入列表的指定位置

②举例 
public class text2 {public static void main(String[] args) {ArrayList<Integer> list1 = new ArrayList<Integer>();list1.add(777);list1.add(888);list1.add(0,111);System.out.println(list1);}
}
//结果
//[111, 777, 888]

(二)常用方法

1.public boolean remove(Object o)——删除指定的元素,放回删除是否成功

①格式

boolean 变量名 = 对象名  . remove(要删除的数据);

②举例
public class text2 {public static void main(String[] args) {ArrayList<String> list1 = new ArrayList<String>();list1.add("777");list1.add("888");list1.add(0,"111");boolean b = list1.remove("777");boolean b1 = list1.remove("000");System.out.println(b);System.out.println(b1);System.out.println(list1);}
}
//结果
//true
//false
//[111, 888]

2.public E remove(int index)——删除指定索引处的元素,返回被删除的元素

①格式

被删除数据的类型 变量名 = 对象名 . remove ( 被删除的数据的索引);

②举例
public class text2 {public static void main(String[] args) {ArrayList<String> list1 = new ArrayList<String>();list1.add("777");list1.add("888");list1.add(0,"111");String s = list1.remove(1);System.out.println(s);System.out.println(list1);}
}
//结果
//777
//[111, 888]

3.public E set(int index , E element)——删除指定索引处的元素,返回被修改的元素

①格式

被修改的数据的类型 变量名 = 对象名 . set(index,修改后的元素);

②举例
public class text2 {public static void main(String[] args) {ArrayList<String> list1 = new ArrayList<String>();list1.add("777");list1.add("888");list1.add(0,"111");String s = list1.set(0, "666");System.out.println("被修改的元素为"+s);System.out.println(list1);}
}
//结果
//被修改的元素为111
//[666, 777, 888]

4.public E get(int index)——返回指定索引处的元素

①格式

索引处元素的类型 变量名 = 对象名 . get ( index ) ;

②举例
public class text2 {public static void main(String[] args) {ArrayList<String> list1 = new ArrayList<String>();list1.add("777");list1.add("888");list1.add(0,"111");String s = list1.get(0);System.out.println(s);}
}
//结果
//111

5.public int size()——返回集合中的元素个数

①格式

int 变量名 = 对象名 . size () ;

②举例
public class text2 {public static void main(String[] args) {ArrayList<String> list1 = new ArrayList<String>();list1.add("777");list1.add("888");list1.add(0,"111");int s = list1.size();System.out.println(s);}
}
//结果
//3

三、学生系统案例

(一)构造学生类

package domain;
public class Student {private int sid;private String name;private int age;private String birthday;public Student() {}public Student(int sid, String name, int age, String birthday) {this.sid = sid;this.name = name;this.age = age;this.birthday = birthday;}public int getSid() {return sid;}public void setSid(int sid) {this.sid = sid;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getName() {return name;}public int getAge() {return age;}public String getBirthday() {return birthday;}}

(二)系统

package xixi;
import domain.Student;
import java.util.ArrayList;
import java.util.Scanner;
public class Text1 {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();lo:while (true){int chices = Choice();switch (chices){case 1:addStudent(list);break;case 2:deleteStudent(list);break;case 3:updateStudent(list);break;case 4:queryStudents(list);break;case 5:System.out.println("感谢您的使用");break lo;default:System.out.println("您的输入有误");break;}}}
//选择功能方法private static int  Choice() {Scanner input = new Scanner(System.in);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("请输入你的选择:");return input.nextInt();}
//    输入学生信息方法public static void addStudent(ArrayList<Student> list) {Scanner input = new Scanner(System.in);int ans = -1;do {System.out.println("请输入学生学号:");int sid = input.nextInt();ans = getIndex(list,sid);if (ans != -1) {System.out.println("你输入的学号已经被占用,请重新输入!");} else {System.out.println("请输入学生姓名:");String name = input.next();System.out.println("请输入学生年龄:");int age = input.nextInt();System.out.println("请输入学生生日:");String birthday = input.next();Student stu = new Student(sid,name,age,birthday);list.add(stu);System.out.println("添加成功!");}}while (ans!=-1);}
//    获得学生学号下标方法public static int getIndex(ArrayList<Student>list,int sid){for (int i = 0; i < list.size(); i++) {Student stu = list.get(i);if (stu.getSid()==sid){return i;}}return -1;}
//    删除学生信息方法public static void deleteStudent(ArrayList<Student> list) {Scanner input = new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");int sid= input.nextInt();int index = getIndex(list,sid);if (index==-1) {System.out.println("该信息不存在,请重新输入!");}else {list.remove(index);System.out.println("删除学生成功");}}
//    展示所有学生信息方法public static void queryStudents(ArrayList<Student> list) {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++) {System.out.println(list.get(i).getSid()+"\t\t"+ list.get(i).getName()+"\t\t"+ list.get(i).getAge()+"岁\t"+ list.get(i).getBirthday());}}
//    修改学生信息方法public static void updateStudent(ArrayList<Student> list) {Scanner input = new Scanner(System.in);System.out.println("请输入你要修改的学生学号:");int sid = input.nextInt();int index = getIndex(list,sid);if (index == -1) {System.out.println("该信息不存在,请重新输入!");}else {Student stu = list.get(index);System.out.println("请输入学生新姓名:");String name = input.next();stu.setName(name);System.out.println("请输入学生新年龄:");int age = input.nextInt();stu.setAge(age);System.out.println("请输入学生新生日:");String birthday = input.next();stu.setBirthday(birthday);System.out.println("修改学生成功");}}
}
http://www.xdnf.cn/news/421327.html

相关文章:

  • OpenCV中的光流估计方法详解
  • 前端面试每日三题 - Day 33
  • 深入理解BLP安全模型:信息安全中的“守密者”
  • win部署Jenkins 自动化部署发布后端项目
  • 文件操作: File 类的用法和 InputStream, OutputStream 的用法
  • 构建媲美 ChatGPT 的 AI 交互界面—OpenWebUI
  • 大模型分布式光伏功率预测实现详解
  • Linux—进度条实现
  • 开源网络地图可视化第六章学习指南
  • 【unity游戏开发——编辑器扩展】使用MenuItem自定义菜单栏拓展
  • 【ArcGIS】根据shp范围生成系列等距点:范围外等距点+渔网点(Python全代码)
  • Android之横向滑动列表
  • ETL背景介绍_1:数据孤岛仓库的介绍
  • HTTP和HTTPS模块
  • 【计算机视觉】OpenCV实战项目:基于Tesseract与OpenCV的字符识别系统深度解析
  • Flask+HTML+Jquery 文件上传下载
  • 数据库优化
  • 第一章:HTML基石·现实的骨架
  • 《Effective Python》第2章 字符串和切片操作——深入理解Python 中的字符数据类型(bytes 与 str)的差异
  • ValueError: Caught ValueError in DataLoader worker process 0.
  • Postman启动时检测到版本不匹配错误
  • stm32之PWR、WDG
  • UE5通过C++实现TcpSocket连接
  • 在SQL Server中调整查询超时j解决方案
  • STM32 启动文件分析
  • 为何选择MCP?自建流程与Anthropic MCP的对比分析
  • docker大镜像优化实战
  • Landsat 5介绍
  • 【HCIA】浮动路由
  • 代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I