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

【Java】ArrayList相关操作及其案例

 ArrayList相当于集合,作为一种容器存储数据,与数组类似。不同的是,ArrayList中长度可变,而数组长度不可变。

 ArrayList相关API

构造器

public ArrayList() 创建一个空的集合对象

ArrayList<String>arr=new ArrayList<>();
长度获取

public int size()

 添加元素

public boolean add(E e)将指定元素添加到此集合末尾

arr.add("Java");
arr.add("黑马");

 public void add(int index,E element)在集合中指定位置插入指定的元素

arr.add(1,"MySQL);
元素获取

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

String rs=arr.get(1);
System.out.println(rs);
 删除元素

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

arr.remove(1);
arr.remove(2);

 public boolean remove(Object O)删除指定的元素,并返回是否删除成功

arr.remove("Java");
修改元素

public E set(int index,E element)修改指定索引处的元素,返回原来的值

arr.set(1,"IDEA");

ArrayList相关案例

从集合中批量删除元素

两种方式,一种是从左往右,一种是从右往左,操作有些许不同

package com.itheima.hello;import java.util.ArrayList;
import java.util.Scanner;public class HelloWorld {public static void main(String args[]){ArrayList<String> arr=new ArrayList<>();arr.add("Java入门");arr.add("黑枸杞");arr.add("人字拖");arr.add("宁夏枸杞");arr.add("特级枸杞");arr.add("枸杞子");delete(arr);System.out.println(arr);for(int i=0;i<arr.size();i++)//从左往右遍历,要注意删完元素后,后面的元素会往前移动,但同时i又会往后移动,因此可能有元素会被错过{String se=arr.get(i);if(se.contains("枸杞")){arr.remove(i);i--;}}System.out.println(arr);}public static void delete(ArrayList<String>arr){ArrayList<String>arr1=new ArrayList<>(arr);//new一个,使用arr1,避免修改arrfor(int i=arr1.size()-1;i>=0;i--){String se=arr1.get(i);if(se.contains("枸杞")){arr1.remove(i);}}System.out.println(arr1);}
}
使用ArrayList实现一个菜单

Food.java

package com.itheima.hello;public class Food {//菜品类private String name;//菜品名称private String desc;//描述private double price;//价格public Food() {}public Food(String name, double price, String desc) {this.name = name;this.price = price;this.desc = desc;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public double getPrice() {return price;}public void setPrice(double price) {if(price<0){System.out.println("价格设置错误,请重新设置");return;}this.price = price;}}

FoodOperator.java 

package com.itheima.hello;import java.util.ArrayList;
import java.util.Scanner;public class FoodOperator {//菜品操作类,负责完成对菜品的业务实现private ArrayList<Food>foods=new ArrayList<>();//创建一个Food类,来存取数据public void addFood()//添加菜品{Scanner sc=new Scanner(System.in);Food f=new Food();System.out.println("请输入菜品名称:");String name=sc.next();f.setName(name);while(true){System.out.println("请输入菜品价格:");double price=sc.nextDouble();f.setPrice(price);if(price>0)break;}System.out.println("请输入菜品描述:");String desc=sc.next();f.setDesc(desc);foods.add(f);//将它添加到集合中}public void showfood(){if(foods.size()==0){System.out.println("您没有添加任何菜品,快去添加菜品吧");return;}for (int i = 0; i < foods.size(); i++) {Food fo=foods.get(i);String name=fo.getName();double price=fo.getPrice();String desc=fo.getDesc();System.out.println(name);System.out.println(price);System.out.println(desc);System.out.println("-------------");}}public void start(){while (true){System.out.println("1.添加菜品");System.out.println("2.展示菜品");System.out.println("3.退出系统");System.out.println("请选择您的操作:");Scanner sc = new Scanner(System.in);String id = sc.next();switch (id) {case "1":addFood();break;case "2":showfood();break;case "3":System.out.println("欢迎下次光临");return;default:System.out.println("输入指令错误,请重新输入");break;}}}
}

HelloWorld.java

package com.itheima.hello;import java.util.ArrayList;
import java.util.Scanner;public class HelloWorld {//设计一个菜品的展示界面//进行上架功能,添加商品名字,商品价格,商品描述//进行展示,显示所有的商品及其信息public static void main(String args[]){FoodOperator foodop=new FoodOperator();//相当于设计了一个页面foodop.start();}}

http://www.lryc.cn/news/468073.html

相关文章:

  • 手机pdf阅读器,用手机也能够阅读、编辑pdf文件
  • 通过 Twitter Token 实现授权与操作
  • 100个SSM框架(Spring + Spring MVC + MyBatis)毕业设计选题
  • STM32F1+HAL库+FreeTOTS学习17——事件标志组
  • ElasticSearch基本概念
  • fluent-ffmpeg操作MP3文件深入解析
  • 做信创项目需要什么资质、信创产品认证标准?
  • Spring i18n国际化
  • 基于stm32的楼宇照明控制系统设计
  • ESP32移植Openharmony外设篇(3)OLED屏
  • 人工智能:未来生活与工作的变革力量
  • AI自动生成PPT哪个软件好?智能生成PPT不再熬夜做课件
  • C# OOP面试题精选 面向新手/SOLID原则/设计模式++ 长期更新
  • 安全见闻(2)——开阔眼界,不做井底之蛙
  • ProtoBuf 的含义和安装
  • C++位操作实战:掩码、提取与组装
  • PVE虚拟机强制重启
  • Adobe Acrobat DC 打印PDF文件,没有打印出注释的解决方法
  • 主机名学习
  • SpringBoot循环依赖
  • 一道面试题:为什么要使用Docker?
  • 类的创建、构造器、实例属性、实例方法
  • js读取.txt文件内容
  • 【AscendC算子开发】笔记2 算子高级开发和调试调优
  • vscode连接keil-5 开发STM32 程序
  • 数据结构深度优先搜索遍历连通图+非连通图(C语言代码+遍历+终端输入内容)
  • 信息安全工程师(55)网络安全漏洞概述
  • member access within null pointer of type ‘ListNode‘
  • UE5蓝图中整理节点的方法
  • 01,http 协议