0

0

ArrayList集合

巴扎黑

巴扎黑

发布时间:2017-06-26 09:52:39

|

2695人浏览过

|

来源于php中文网

原创

集合出现的原因
数组存储数据是固定存储 ,当遇到要存储数据的个数不确定的时候 数组就不满足了,集合就出现了
集合存储数据的个数,可以随着数据量的变化而变化,不会造成越界或者大量的空间浪费
存储数据的个数是可变的

arraylist:
  java.util包下
  底层维护了一个数组
  线程不同步(处理速度快)

创建arraylist对象的格式:
  arraylist 集合名字 = new arraylist();
  : 泛型, 代表了集合中要存储的数据类型, 想存什么类型 就把e改成什么类型 , 如要存储string类型的数据 就把e改成string


注意: 集合只能存储引用类型的数据


基本数据类型 对应的引用数据类型表示形式
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

ArrayList常见功能
添加
public boolean add(E e)
public void add(int index,E element) // 在指定的索引位置添加元素

获取元素
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)// 使用element 去替换指定索引的元素 , 并返回被替换的元素

MCP Market
MCP Market

MCP Servers集合平台,帮你找到最好的MCP服务器

下载

学生管理系统练习
学生信息包括 : 学号 姓名 年龄  家乡
打印欢迎语句
打印对应的功能 , 并接收用户的输入

1.查看学生信息
如果系统没有学生信息 则给出对应的提示
如果系统中有学生信息, 则按照指定的格式打印学生信息
2.添加学生信息
从键盘录入学生的信息 组成对象 添加到集合中
根据学号去重,只有没重复的学号才能添加到集合中

3.修改学生信息
根据学号找到学生进行修改
如果没有学号则给出对应的提示
如果找到学号则继续收集新信息, 使用新信息修改原来的元素
4.删除学生信息
根据学号删除学生
如果没有指定学号则给出指定的提示
如果有学号则删除指定的元素
5.退出学生信息管理系统
提示退出
并结束程序
代码演示

  1 public static void main(String[] args) {  
  2         // 初始化数据  
  3         // 创建一个集合容器 可以存储学生的信息  
  4         ArrayList<Student> list = new ArrayList<Student>();  
  5         // =========================测试数据================================  
  6 //        Student s1 = new Student("9001", "阿拉甲", "18", "迪拜");  
  7 //        Student s2 = new Student("9002", "阿拉yi", "18", "迪拜");  
  8 //        Student s3 = new Student("9003", "阿拉饼", "18", "迪拜");  
  9 //        list.add(s1); 
  10 //        list.add(s2); 
  11 //        list.add(s3); 
  12 //        System.out.println("初始化完毕"); 
  13         // =========================测试数据================================ 
  14  
  15         System.out.println("-------------------欢迎使用学生管理系统------------------------"); 
  16  
  17         // 死循环
  18         while (true) { 
  19             // 展示功能菜单 
  20             System.out.println("================================="); 
  21             System.out.println("1.查看学生信息"); 
  22             System.out.println("2.添加学生信息"); 
  23             System.out.println("3.修改学生信息"); 
  24             System.out.println("4.删除学生信息"); 
  25             System.out.println("5.退出学生信息管理系统");
   26             System.out.println("请输入对应功能的序号"); 
   27             System.out.println("================================="); 
   28             // 接收用户的输入 
   29             Scanner sc = new Scanner(System.in); 
   30             int user = sc.nextInt(); 
   31             // 根据用户的输入进行功调用 
   32             switch (user) { 
   33             case 1: 
   34                 show(list); 
   35                 break; 
   36             case 2: 
   37                 add(list); 
   38                 break; 
   39             case 3: 
   40                 upd(list); 
   41                 break; 
   42             case 4: 
   43                 del(list); 
   44                 break; 
   45             case 5: 
   46                 System.out.println("感谢使用管理系统 欢迎下次再来哦  "); 
   47                 // 终止虚拟机 
   48                 System.exit(0); 
   49                 // return; 
   50                 break; 
   51  
   52             default: 
   53                 System.out.println("对不起 没有这个功能 ,请控制你自己 "); 
   54                 break; 
   55             } 
   56         } 
   57     } 
   58  
   59     // 功能方法s 
   60     public static void del(ArrayList<Student> list) { 
   61         // 1.提示输入学号
   62         Scanner sc = new Scanner(System.in); 
   63         System.out.println("请输入学号"); 
   64         String id = sc.next(); 
   65 
   66         // 2.查找
   67         // 定义标记 
   68         int index = -1; 
   69         // 遍历比较 并修改 
   70         for (int i = 0; i < list.size(); i++) { 
   71             Student tmp = list.get(i); 
   72             if (tmp.getId().equals(id)) { 
   73                 // 找到了 
   74                 // 改变标记 
   75                 index = i;
   76                 break; 
   77             } 
   78         } 
   79         // 3.判断结果 
   80         // 判断标记 
   81         if (index == -1) { 
   82             // 没有找到 
   83             System.out.println("您输入的学号 咱们系统没有, 请重新选择功能"); 
   84         } else { 
   85             // 找到了 执行删除 
   86             list.remove(index); 
   87             System.out.println("删除完毕");
   88         } 
   89     } 
   90  
   91     public static void upd(ArrayList<Student> list) { 
   92         // 1.提示输入学号 
   93         Scanner sc = new Scanner(System.in); 
   94         System.out.println("请输入学号"); 
   95         String id = sc.next(); 
   96  
   97         // 2.查找 
   98         // 定义标记 
   99         int index = -1;
   100         // 遍历并比较
   101         for (int i = 0; i < list.size(); i++) {
   102             Student tmp = list.get(i);
   103             if (tmp.getId().equals(id)) {
   104                 // 找到了
   105                 // 修改标记
   106                 index = i;
   107                 break;
   108             }
   109         }
   110         // 3.根据查找的结果做不同的动
   111         // 判断标记
   112         if (index == -1) {
   113             // 没找到,
   114             System.out.println("您输入的学号 咱们系统中没有 ,请重新选择功能 ");
   115         } else {
   116             // 找到了
   117             // 3.收集其他信息
   118             System.out.println("请输入新姓名");
   119             String name = sc.next();
   120             System.out.println("请输入新年龄");
   121             String age = sc.next();
   122             System.out.println("请输入新家乡");
   123             String home = sc.next();
   124124             // 4.组成对象添加到集合中
   125             Student s = new Student(id, name, age, home);
   126             // 修改
   127             list.set(index, s);
   128             System.out.println("修改完毕");
   129         }
   130 
   131     }
   132 
   133     public static void add(ArrayList<Student> list) {
   134         // 1.提示输入学号
   135         Scanner sc = new Scanner(System.in);
   136         System.out.println("请输入学号");
   137         String id = sc.next();
   138         // 2.根据学号去重
   139 
   140         // 使用用户输入的学号去集合中查找, 如果找到与用户输入的学号一样的学号表示有重复,此时要继续提示输入学号,并继续去重
   141         // 直到用户输入的学号与集合中元素的学号不一致的时候再收集其他的信息
   142         while (true) {
   143             // 定义一个标记 给一个默认值
   144             int index = -1;
   145             // 遍历集合获取元素的学号与用户输入的学号进行比较
   146             for (int i = 0; i < list.size(); i++) {
   147                 Student tmp = list.get(i);
   148                 if (tmp.getId().equals(id)) {
   149                     // 表示重复
   150                     // 修改标记
   151                     index = i;
   152                     break;
   153                 }
   154             }
   155 
   156             // 判断标记
   157             if (index == -1) {
   158                 // 没有重复
   159                 break;
   160             } else {
   161                 // 有重复
   162                 System.out.println("您输入的学号 重复了 ,请重新输入学号 ");
   163                 id = sc.next();
   164 
   165             }
   166         }
   167 
   168         // 3.收集其他信息
   169         System.out.println("请输入姓名");
   170         String name = sc.next();
   171         System.out.println("请输入年龄");
   172         String age = sc.next();
   173         System.out.println("请输入家乡");
   174         String home = sc.next();
   175         // 4.组成对象添加到集合中
   176         Student s = new Student(id, name, age, home);
   177         list.add(s);
   178         System.out.println("添加完毕");
   179     }
   180 
   181     public static void show(ArrayList<Student> list) {
   182         // 1.判断集合是否有元素
   183         if (list.size() == 0) {
   184             // 如果没有给出特定的提示
   185             System.out.println("系统中没有学生的信息,请选择添加功能");
   186         } else {
   187             // 如果有就按照指定格式遍历
   188             System.out.println("================学生信息如下====================");
   189             System.out.println("学号\t\t姓名\t\t年龄\t\t家乡");
   190             // 遍历集合获取学生信息
   191             for (int i = 0; i < list.size(); i++) {
   192                 Student tmp = list.get(i);
   193                 System.out
   194                         .println(tmp.getId() + "\t\t" + tmp.getName() + "\t\t" + tmp.getAge() + "\t\t" + tmp.getHome());
   195             }
   196             System.out.println("====================================");
   197         }
   198         System.out.println("展示完毕");
   199     }

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
TypeScript 教程
TypeScript 教程

共19课时 | 3.1万人学习

Pandas 教程
Pandas 教程

共15课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号