Java开发从入门到精通(十一):Java常用的API编程接口:ArrayList集合

(一)Java的常用API:ArrayList集合

1.1 什么是集合?

  • 集合是一种容器,用来装数据的,类似于数组。

1.2 有数组,为啥还学习集合?

  • 数组定义完成并启动后,长度就固定了。

在这里插入图片描述

  • 集合大小可变,开发中用的更多

1.3 ArrayList集合该怎么学呢?

  • 1、会提供创建容器对象的方式

  • 2、会提供相应的方法对容器进行操作

    • 添加数据
    • 删除某个数据
    • 修改某个数据
    • 获取某个数据

ArrayList集合学习的步骤:1、创建对象 2、增删改查的方法3、容器的其他特点

在这里插入图片描述

1.3.1 创建ArrayList对象

创建一个没有类型的ArrayList的集合对象

import java.util.ArrayList;

/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。
 **/
public class ArrayListDemo {
    public static void main(String[] args) {
        //1、创建一个没有类型的ArrayList的集合对象
        ArrayList list = new ArrayList();
        list.add("黑马");
        list.add(666);
        list.add(99.5);
        list.add("黑马");
        list.add("Java");
        System.out.println(list);
	}
}

创建一个指定类型的ArrayList的集合对象,两种写法:
第一种:

ArrayList<String> list = new ArrayList<String>();

第二种:

ArrayList<String> list = new ArrayList<>();
import java.util.ArrayList;

/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。
 **/
public class ArrayListDemo {
    public static void main(String[] args) {
        //1、创建一个指定类型的ArrayList的集合对象//
        // 第一种写法:ArrayList<String> list = new ArrayList<String>();
        // 从jdk 1.7开始才支持的
        //第二种写法:ArrayList<String> list = new ArrayList<>();
        ArrayList<String> list = new ArrayList<>();
        list.add("黑马");
        list.add("黑马");
        list.add("Java");
        System.out.println(list);

1.3.ArrayList的增删改查操作

import java.util.ArrayList;

/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。
 **/
public class ArrayListDemo {
    public static void main(String[] args) {
        //1、创建一个指定类型的ArrayList的集合对象//
        // 第一种写法:ArrayList<String> list = new ArrayList<String>();
        // 从jdk 1.7开始才支持的
        //第二种写法:ArrayList<String> list = new ArrayList<>();
        ArrayList<String> list = new ArrayList<>();
        list.add("黑马");
        list.add("黑马");
        list.add("Java");
        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,反之
        System.out.println(list.remove( "Java"));
        System.out.println(list);
        list.add( 1, "html");
        System.out.println(list);

        // 默认删除的是第一次出现的这个黑马的数据的
        System.out.println(list.remove( "黑马"));
        System.out.println(list);

        // 7、修改某个索引位置处的数据,修改后会返回原来的值给我们
        System.out.println(list.set(1,"黑马程序员"));
        System.out.println(list);
    }
}

1.3.3 ArrayList集合的案例

  • 批量删除含有枸杞的产品
import java.util.ArrayList;
public class ArrayListDemo1 {
    public static void main(String[] args) {
        // 1、创建一个ArrayList集合对象
        ArrayList<String> list = new ArrayList<>();list.add("Java入门");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);

        // 2、开始完成需求:从集合中找出包含枸杞的数据并删除它
        for(int i=0;i<list.size();i++) {
            // i = 0 1 2 3 4 5
            // 取出当前遍历到的数据
            String ele = list.get(i);
            // 判断这个数据中包含枸杞
            if (ele.contains("枸杞")) {
                // 直接从集合中删除该数据
                list.remove(ele);
            }
        }
        System.out.println(list);
    }
}
[Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特级枸杞, 枸杞子]
[Java入门, 黑枸杞, 人字拖, 枸杞子]

以上代码未能全部删除含有枸杞的产品

全部删除的方法1:

import java.util.ArrayList;
public class ArrayListDemo1 {
    public static void main(String[] args) {
        // 1、创建一个ArrayList集合对象
        ArrayList<String> list = new ArrayList<>();list.add("Java入门");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);

        // 2、开始完成需求:从集合中找出包含枸杞的数据并删除它
        for(int i=0;i<list.size();i++) {
            // i = 0 1 2 3 4 5
            // 取出当前遍历到的数据
            String ele = list.get(i);
            // 判断这个数据中包含枸杞
            if (ele.contains("枸杞")) {
                // 直接从集合中删除该数据
                list.remove(ele);
                i--;
            }
        }
        System.out.println(list);
    }
}

全部删除的方法2:

import java.util.ArrayList;
public class ArrayListDemo1 {
    public static void main(String[] args) {
        // 1、创建一个ArrayList集合对象
        ArrayList<String> list = new ArrayList<>();list.add("Java入门");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);

        // 2、// 方式二:从集合的后面倒着遍历并删除
        for(int i = list.size()-1;i >= 0; i--) {
            // i = 0 1 2 3 4 5
            // 取出当前遍历到的数据
            String ele = list.get(i);
            // 判断这个数据中包含枸杞
            if (ele.contains("枸杞")) {
                // 直接从集合中删除该数据
                list.remove(ele);
            }
        }
        System.out.println(list);
    }
}

ArrayList的综合案例-模仿外卖系统中的商家系统

  • 完成菜品的上架、以及菜品信息浏览功能
    在这里插入图片描述

实现这个程序的首先创建实体类用来保存数据

  • Food.java
  • 这里保存创建菜单所需要的变量,但属性都是私有的,不允许别人访问修改
package com.qianxin.arraylist.xiangmu;

public class Food {
    private String name;
    private double price;
    private String desc;

    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 double getPrice() {
        return price;
    }

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

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

在创建操作类,用来展示操作界面和实现新增和展示菜品功能

  • FoodOperator.java
package com.qianxin.arraylist.xiangmu;

import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Scanner;

public class FoodOperator {
    // 1、定义一个ArrayLst集合对象,负责存储菜品对象信息
    private ArrayList<Food> foodlist= new ArrayList<>();

    public void addFood(){
        Food f= new Food();
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入该菜品的名字:");
        String name = sc.next();
        f.setName(name);

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

        System.out.println("请输入菜品的描述:");
        String desc = sc.next();
        f.setDesc(desc);

        foodlist.add(f);
        System.out.println("上架成功");

    }

    public void showAllFood(){
        for (int i = 0; i < foodlist.size(); i++) {
            Food f = foodlist.get(i);
            System.out.println(f.getName());
            System.out.println(f.getPrice());
            System.out.println(f.getDesc());
            System.out.println("------------------------------------------");

        }
    }
    public void start(){
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你的选择:1.添加菜品 2.展示菜品 3.退出");
            String command = sc.next();
            switch (command){
                case "1":
                    addFood();
                    break;
                case "2":
                    showAllFood();
                    break;
                case "3":
                    System.out.println("欢迎下次再来");
                    return;
                default:
                    System.out.println("您输入的不合法!");
            }
        }
    }

}

最后创建主程序进行调用
ArrayTest1.java

package com.qianxin.arraylist.xiangmu;

public class ArrayTest1 {
    public static void main(String[] args) {
        FoodOperator operator = new FoodOperator();
        operator.start();
    }
}
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HACKNOE

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

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

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

打赏作者

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

抵扣说明:

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

余额充值