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

【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,避免修改arr
        for(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.kler.cn/news/364380.html

相关文章:

  • 一座数智工厂,看见汽车制造的诗与远方
  • Vue项目的分页组件封装
  • 使用Python和Matplotlib模拟3D海浪动画
  • go基础(一)
  • ZYNQ PS_GPIO中断
  • 国产蓝牙耳机哪个品牌值得买?百元国产蓝牙耳机品牌排行榜
  • 安全见闻(4)
  • 什么是恶意爬虫,有什么应对措施
  • iOS 18.2开发者预览版 Beta 1版本发布,欧盟允许卸载应用商店
  • 字符串使用方法:
  • AI模型架构如(CNN)、(RNN)(LSTM、GRU)、(如BERT、GPT等)在不同领域中的具体应用
  • 分布式---raft算法
  • 民峰金融智能交易模型的应用与未来趋势
  • 【操作系统】Linux之进程管理一
  • 51单片机快速入门之 步进电机的使用与 ULN2003 2024/10/21
  • 没有AWS账号能不能在手机上使用AWS服务吗?
  • 【MAC OS】rocketmq搭建可视化工具rocketmq-dashboard
  • Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
  • CSS Id 和 Class选择器
  • [表达式]真假计算
  • 【黑马Redis原理篇】Redis内存回收
  • reactive中声明ref对象,怎么使用
  • vue-vant框架引入
  • obesi-daemon.log这个日志一直在不断输出?
  • Centos编写mysql备份脚本
  • 好用的vscode内置GPT中文版插件 ,可问答 , 可生成代码! (AI程序员 , 出列 !)