使用十步天才法讲ArrayList

1.学习目的

在做项目的时候,往往需要在进行数据的输入,我们一般想到的是数组,但是数组成立的时候需要输入数组的长度,在实际生活中输入的长度往往是未知的,且输入的数据可能出现重复,此时,数组不再适用

package com.zyp;

import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        int[] arr=null;
        arr=new int[5];
        for (int i = 0; i < arr.length+1; i++) {
            arr[i]=i;//会报错,因为长度超过规定的长度
        }
        ArrayList<String> arrayList=new ArrayList<>();
        for (int i = 0; i < 200; i++) {
            arrayList.add(i+"");//不会报错,因为长度不限
        }
    }
}

2.用途

用于需要不断输入数据的的项目,如饿了么软件的注册商家

3.如何使用

语法:ArrayList<E>

相关使用方法

package com.xaca;

import java.util.ArrayList;

public class Test2 {
    public static void main(String[] args) {
        //创建一个ArrayList的集合对象,规范写法
        //ArrayList<String> list=new ArrayList<String>();
        ArrayList<String> list=new ArrayList<>();//标准写法
        //向list添加数据
        list.add("黑马");
        System.out.println(list);
        //2.往集合中的某个索引位置处添加一个元素
        list.add(1,"Mysql");
        System.out.println(list);
        //3.根据索引获取集合中某个索引位置处的值
        String rs=list.get(1);
        System.out.println(rs);
        //4.返回集合存储的元素个数
        System.out.println(list.size());
        //5.删除指定索引处的元素,返回被删除的元素值
        System.out.println(list.remove(1));
        System.out.println(list);
        //6.直接删除某个第一个出现元素值,成功返回true,否则是false
        System.out.println(list.remove("黑马"));
        //7.修改某个指定索引的数据,修改后会返回原来的数据
        list.add("zyp");
        System.out.println(list.set(0,"zx"));
        System.out.println(list);
    }
}

4.浅谈设计者关于该API的设计

涉及到泛型的使用

其一:根据定义语法:ArrayList<type>

type的标识限定了集合内数据的类型

其二:关于ArrayList的类型,这个是引用数据类型,所以该数据类型能够对该对象的数据进行增、删、改、查

5.类比其他概念

ArrayList与Array不同点:1.ArrayList里面数据长度没有限制,而Array有

                                          2.ArrayList所构成的集合,需要通过方法进行不停的调用,而Array直接通过索引进行使用

                                        3..ArrayList的数据可以重复,而Array不能

 ArrayList与Array相似点:1.ArrayList使用泛型进行数据类型的限制,Array通过type[] arr进行限制

                                           2.都是引用数据类型

6.实际应用操作

创建一个饿了么添加菜品

第一步:进行食品的打包

package com.zyp;

public class Food {
    private String name;
    private double price;
    private String miaoshu;//描述

    public Food() {
    }

    public Food(String name, double price, String miaoshu) {
        this.name = name;
        this.price = price;
        this.miaoshu = miaoshu;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getMiaoshu() {
        return miaoshu;
    }

    public void setMiaoshu(String miaoshu) {
        this.miaoshu = miaoshu;
    }

    @Override
    public String toString() {
        return this.getName()+"\t"+this.getPrice()+"\t"+this.getMiaoshu();
    }
}

第二步:进行操作界面的打造,包括上架、展示菜品和操作界面的打造

package com.zyp;

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

//菜品操作类,负责对菜品上架与浏览功能
public class FoodOperator {
    //1.定义集合,存储菜品信息
    private ArrayList<Food> Foods=new ArrayList<>();
    //foods={}
    //2.开发功能,上架菜品功能
    public void addFood(){
        //3.创建一个菜品对象,封装上架菜品信息
        Food food=new Food();
        //4.录入菜品信息,录入需要以下API的帮助
        Scanner sc=new Scanner(System.in);
        System.out.println("请您输入菜品名称");
        String name= sc.next();
        food.setName(name);

        System.out.println("请您输入菜品价格");
        double price=sc.nextDouble();
        food.setPrice(price);

        System.out.println("请您输入菜品描述");
        String miaoshu= sc.next();
        food.setMiaoshu(miaoshu);
        //5.把菜品对象存入集合中
        Foods.add(food);
        System.out.println("上架成功");
    }
    //6.展示菜品
    public void show(){
        if (Foods.size()==0){
            System.out.println("什么菜品都没有");
            return;
        }
        for (int i = 0; i < Foods.size(); i++) {
            Food f=Foods.get(i);
            System.out.println(f);
        }
    }
    //7.展示操作界面
    public void start(){
        while (true){
            System.out.println("请选择功能:");
            System.out.println("1:上架菜品");
            System.out.println("2:展示菜品");
            System.out.println("3:退出");
            Scanner sc=new Scanner(System.in);
            System.out.println("请选择操作");
            String command= sc.next();
            switch (command){
                case "1":
                    addFood();
                    break;
                case "2":
                    show();
                    break;
                case "3":
                    System.out.println("下次再来");
                    return;//干掉方法
                default:
                    System.out.println("输入不合法");
            }
        }

    }
}

第三步:进行测试

package com.zyp;

import java.util.ArrayList;

public class ArrayListTest2 {
    public static void main(String[] args) {
        //完成拓展案例:商家商品上架
        //1.设计菜品类。负责创建菜品对象
        //2.设计一个菜品操作类(上架)
        FoodOperator f1=new FoodOperator();
        f1.start();
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyp20221

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值