JavaSE——常用API(3/3)-ArrayList入门、ArratList使用、ArrayList综合案例

简介: JavaSE——常用API(3/3)-ArrayList入门、ArratList使用、ArrayList综合案例

ArrayList入门

ArrayList代表的是一种集合

那什么是集合?

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

有数组为什么还要学习集合呢?

  • 数组定义完成并启动后,长度就固定了。
  • 但是这并不符合我们大多数的需求,而集合大小可变,开发中用得更多。

集合的种类

  • HashSet
  • List
  • Map
  • Set
  • TreeSet
  • ArrayList
  • HashMap
  • LinkedHashMap
  • ......

ArrayList集合怎么学

ArrayList集合既然是一种容器,那么自然会提供创建容器对象的方式,以及提供相应的方法对容器进行操作:添加数据删除某个数据修改某个数据获取某个数据

所以我们要学习ArrayList的三点:

  1. 创建对象
  2. 增删查改的方法
  1. 容器的其他特点

ArrayList<E>

  • 是用得最多、最常见的一种集合

尖括号内的E代表了容器可以存储什么数据类型,如果不写则代表可以存储任意数据类型。

例如:

//在创建ArrayList集合对象时
ArrayList list1 = new ArrayList();
 
ArrayList<String> list2 = new ArrayList<String>();
 
//list1这个集合可以存储任意类型的数据
//而list2因为加上了String的约束,所以只能存储String类型的数据
//JDK1.7开始才支持的

图片.png

注意

  • 调用remove方法删除指定的元素而非指定的索引时,会删除出现的第一个指定的元素,不会删除后面与它相同的元素。

ArratList使用

通过完成一个简单的案例来掌握ArrayList的初步使用,

需求

现在假如购物车中存储了如下这些商品:Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。现在用户不想买枸杞了,选择了批量删除,请完成该需求。

  1. 后台使用ArrayList集合表示购物车,存储这些商品名。
  2. 遍历集合中的每个数据,只要这个数据包含了“枸杞”则删除它。
  3. 输出集合看是否已经成功删除了全部枸杞数据了。



package user.ArrayListTest;
 
import java.util.ArrayList;
 
public class Test1 {
    public static void main(String[] args) {
        ArrayList<String> shoppingCart = new ArrayList<String>();
 
        shoppingCart.add("Java入门");
        shoppingCart.add("宁夏枸杞");
        shoppingCart.add("黑枸杞");
        shoppingCart.add("人字拖");
        shoppingCart.add("特级枸杞");
        shoppingCart.add("特级枸杞");
        shoppingCart.add("枸杞子");
 
        for (int i = shoppingCart.size() - 1; i >= 0; i--) {
            String rs = shoppingCart.get(i);
            if(rs.contains("枸杞")){
                shoppingCart.remove(rs);
            }
        }
 
        System.out.println(shoppingCart);
    }
}


运行结果:


ArrayList综合案例

需求

完成菜品的上架,以及菜品信息浏览功能。

把每一个菜品当成一个对象,所以先要设计一个菜品类来创建菜品对象。

设计菜品类

比较简单地把菜品的基本信息结果写出来即可

package user.ArrayListTest;
 
public class Cuisine {
    private String CuisineName;  //菜品名称
    private double CuisinePrice; //菜品价格
    private String CuisineDesc;  //菜品描述
 
    public Cuisine() {
    }
 
    public Cuisine(String cuisineName, double cuisinePrice, String cuisineDesc) {
        CuisineName = cuisineName;
        CuisinePrice = cuisinePrice;
        CuisineDesc = cuisineDesc;
    }
 
    public String getCuisineName() {
        return CuisineName;
    }
 
    public void setCuisineName(String cuisineName) {
        CuisineName = cuisineName;
    }
 
    public double getCuisinePrice() {
        return CuisinePrice;
    }
 
    public void setCuisinePrice(double cuisinePrice) {
        CuisinePrice = cuisinePrice;
    }
 
    public String getCuisineDesc() {
        return CuisineDesc;
    }
 
    public void setCuisineDesc(String cuisineDesc) {
        CuisineDesc = cuisineDesc;
    }
}

设计完菜品类之后就可以开始设计菜品的操作类了,因为需求是进行菜品的上架,是由用户进行的,所以要通过菜品操作类来执行。

设计菜品操作类

设计菜品的操作类,要完成上架菜品的操作和展示菜品的操作

package user.ArrayListTest;
 
import java.util.ArrayList;
import java.util.Scanner;
 
public class CuisineOperator {
    //先创建一个菜品的列表,用于存储用户上架的每一道菜品,也就是接收菜品对象
    private ArrayList<Cuisine> CuisineList = new ArrayList<>();
 
    //开始上架菜品
    public void addCuisine(){
        //临时创建一个菜品对象,用来接收要上架的菜品信息
        Cuisine food = new Cuisine();
 
        //录入菜品数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入菜品名称:");
        String name = sc.next();
        food.setCuisineName(name);
 
        System.out.println("请您输入菜品价格:");
        double price = sc.nextDouble();
        food.setCuisinePrice(price);
 
        System.out.println("请您输入菜品描述:");
        String desc = sc.next();
        food.setCuisineDesc(desc);
 
        //得到数据后存入菜品清单
        CuisineList.add(food);
    }
 
    //展示菜品
    public void showAllCuisine(){
        for (int i = 0; i < CuisineList.size(); i++) {
            Cuisine c = CuisineList.get(i);
            System.out.println(c.getCuisineName());
            System.out.println(c.getCuisinePrice());
            System.out.println(c.getCuisineDesc());
            System.out.println("---------------");
 
        }
    }
 
    //展示操作界面
    public void start(){
        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":
                addCuisine();
                break;
            case "2":
                showAllCuisine();
                break;
            case "3":
                System.out.println("欢迎下次再来!");
                return;
            default:
                System.out.println("您输入的命令不存在");
        }
 
    }
 
}

运行

package user.ArrayListTest;
 
public class CuisinePutaway {
    public static void main(String[] args) {
        //1.先设计一个菜品类Cuisine
 
        //2.设计菜品操作类CuisineOperator
        
        //开始运行这个案例
        CuisineOperator operator = new CuisineOperator();
        operator.start();
 
    }
}


运行结果:



END



目录
相关文章
|
21天前
|
Java API
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
18 1
|
2天前
|
Linux API 数据安全/隐私保护
一文搞懂:【零基础】易盛9.0API入门二:登陆
一文搞懂:【零基础】易盛9.0API入门二:登陆
|
5天前
|
存储 缓存 Java
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
11 2
|
21天前
|
存储 Java API
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
21 2
|
21天前
|
安全 Java API
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
32 2
|
21天前
|
安全 Java API
JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime
JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime
20 2
|
21天前
|
存储 Java API
JavaSE——常用API进阶二(4/8)-秒杀案例(需求与分析、代码与运行结果)、Calendar(Calendar日历类的常见方法、用法示例)
JavaSE——常用API进阶二(4/8)-秒杀案例(需求与分析、代码与运行结果)、Calendar(Calendar日历类的常见方法、用法示例)
22 1
|
21天前
|
Java API
JavaSE——常用API进阶二(3/8)-Date、SimpleDateFormat(构造器、常用的方法、用法示例、时间格式的常见符号)
JavaSE——常用API进阶二(3/8)-Date、SimpleDateFormat(构造器、常用的方法、用法示例、时间格式的常见符号)
9 1
|
21天前
|
存储 Java API
JavaSE——常用API进阶二(2/8)-BigDecimal(BigDecimal的常见构造器、常用方法,用法示例,使用规范)
JavaSE——常用API进阶二(2/8)-BigDecimal(BigDecimal的常见构造器、常用方法,用法示例,使用规范)
18 1
|
21天前
|
Java Unix 程序员
JavaSE——常用API进阶二(1/8)-Math、System、Runtime(它们提供的常见方法以及具体使用)
JavaSE——常用API进阶二(1/8)-Math、System、Runtime(它们提供的常见方法以及具体使用)
13 1