七、Java常用API(2)
- 软件开发
- 2025-09-06 18:15:02

一、 ArrayList快速入门
学习完String类之后,接下来再学习一个类——叫ArrayList。
ArrayList表示一种集合,它是一个容器,用来装数据的,类似于数组。那有了数组,为什么要有集合呢?
因为数组一旦创建大小不变,比如创建一个长度为3的数组,就只能存储3个元素,想要存储第4个元素就不行。而集合是大小可变的,想要存储几个元素就存储几个元素,在实际工作中用得更多。
然后集合有很多种,而ArrayList只是众多集合中的一种。如下图所示:
集合该怎么学呢?
1. 首先你要会创建集合对象,
2. 然后能够调用集合提供的方法对容器中的数据进行增删改查,
3. 最后知道集合的一些特点就可以了。
(一) ArrayList常用方法想要使用ArrayList存储数据,并对数据进行操作:
第一步:创建ArrayList容器对象。一般使用空参数构造方法,如下图所示:第二步:调用ArrayList类的常用方法对容器中的数据进行操作。常用方法如下: (二) 快速熟悉 ArrayList 集合的常用方法 package nuyoah.arraylist; import java.util.ArrayList; public class ArrayListDemo1 { public static void main(String[] args) { // 目标:掌握ArrayList集合的创建和使用。 // 1、创建ArrayList集合的对象代表一个容器(大小可变,数据可以重复,有索引) // ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list = new ArrayList<>(); // JDK7之后后面类型可以不写 list.add("java1"); list.add("java1"); list.add("金庸"); // list = [java1, java1, 金庸] System.out.println(list); // 2、插入数据 list.add(1, "嵌入式"); System.out.println(list); // 3、根据索引获取数据 :list = [java1, 嵌入式, java1, 金庸] // 0 1 2 3 String ele = list.get(3); System.out.println(ele); // 4、获取集合的大小(元素个数) System.out.println("集合的元素个数:" + list.size()); // 5、根据索引删除数据,返回被删除的数据。 System.out.println(list.remove(1)); System.out.println(list); // 6、直接删除数据,返回真假 , 默认只能删除第一个出现的。 System.out.println(list.remove("java1")); System.out.println(list); // 7、修改某个索引位置处的数据,返回修改前的数据 list = [java1, 金庸] System.out.println(list.set(1, "古龙")); System.out.println(list); } } 二、ArrayList应用案例 (一) 掌握从容器中找出某些数据并成功 v需求:
现在假如购物车中存储了如下这些商品:Jva入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。现在用户不想买枸杞了,选择了批量删除,请完成该需求。
分析:
后台使用ArrayList集合表示购物车,存储这些商品名。遍历集合中的每个数据,只要这个数据包含了“枸杞”则删除它。输出集合看是否已经成功删除了全部枸杞数据了。 package nuyoah.arraylist; import java.util.ArrayList; /** * @Project_Name: ArrayListDemo2.java * @Author: Natural Pride * @Date: 2025/2/15 18:00 * @Description:TODO */ public class ArrayListDemo2 { public static void main(String[] args) { // 目标:掌握从容器中删除数据的技巧。 // 1、准备一个集合,存储一堆商品 ArrayList<String> list = new ArrayList<>(); list.add("Java入门"); list.add("宁夏枸杞"); list.add("黑枸杞"); list.add("人字拖"); list.add("特技枸杞"); list.add("枸杞子"); System.out.println(list); // list = [Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特技枸杞, 枸杞子] // list = [Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特技枸杞, 枸杞子] // i // 遍历集合中的每个数据,只要这个数据包含枸杞,我们就从集合中删除这个数据。 for (int i = 0; i < list.size(); i++) { String name = list.get(i); if(name.contains("枸杞")) { // 从集合中直接干掉这个数据 list.remove(name); i--; // 解决方案一:删完数据后回退一步,才可以保证成功删除数据,不会漏删 } } System.out.println(list); System.out.println("=================="); ArrayList<String> list2 = new ArrayList<>(); list2.add("Java入门"); list2.add("宁夏枸杞"); list2.add("黑枸杞"); list2.add("人字拖"); list2.add("特技枸杞"); list2.add("枸杞子"); // 解决方案二:从后面倒着遍历并删除就没有问题了。 // list2 = [Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特技枸杞, 枸杞子] // list2 = [Java入门, 人字拖] // i for (int i = list2.size() - 1; i >= 0; i--) { String name = list2.get(i); if(name.contains("枸杞")) { // 从集合中直接干掉这个数据 list2.remove(name); } } System.out.println(list2); } }运行结果
(二) ArrayList的综合案例-模仿外卖系统中的商家系统需求:完成菜品的上架、以及菜品信息浏览功能。
目标:使用所学的ArrayList集合结合面向对象编程实现以上2个需求。
分析需求发现:
在外卖系统中,每一份菜都包含,菜品的名称、菜品的原价、菜品的优惠价、菜品的其他信息。那我们就可以定义一个菜品类(Food类),用来描述每一个菜品对象要封装那些数据。接着再写一个菜品管理类(FoodManager类),提供展示操作界面、上架菜品、浏览菜品的功能。 首先我们先定义一个菜品类(Food类),用来描述每一个菜品对象要封装那些数据。 package nuyoah.arraylist Case; /** * @Project_Name: Food.java * @Author: Natural Pride * @Date: 2025/2/15 17:09 * @Description:TODO 菜单类 */ 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; } } 接下来写一个菜品管理类,提供上架菜品的功能、浏览菜品的功能、展示操作界面的功能 package nuyoah.arraylist Case; import java.util.ArrayList; import java.util.Scanner; /** * @Project_Name: FoodOperator.java * @Author: Natural Pride * @Date: 2025/2/15 17:09 * @Description:TODO 菜品操作类 */ public class FoodOperator { // 1、准备一个容器负责存储上架的全部菜品。 // private int id = 1; 与下面变量定义原理相同 private ArrayList<Food> allFoods = new ArrayList<>(); private Scanner sc = new Scanner(System.in); public void addFood() { System.out.println("==============上架菜品=============="); // a、用户每上架一次菜品实际上就是在集合中新增一个菜品对象。 Food f = new Food(); // b、为菜品对象注入菜品的数据。 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); // c、把菜品对象添加到集合容器中去。 allFoods.add(f); System.out.println("菜品上架成功!"); } public void removeFood() { System.out.println("请输入要下架的菜品名称:"); String name = sc.next(); for (int i = 0; i < allFoods.size(); i++) { if(allFoods.get(i).getName().equals(name)) { // 找到了,删除 allFoods.remove(i); break; } } } public void showAllFoods() { System.out.println("==============全部菜品=============="); for (int i = 0; i < allFoods.size(); i++) { Food food = allFoods.get(i); System.out.println(food.getName() + "\t" + food.getPrice() + "\t" + food.getDesc()); } } public void start() { while (true) { System.out.println("=============商家管理系统============="); System.out.println("1、上架菜品"); System.out.println("2、下架菜品(作业)"); System.out.println("3、展示菜品"); System.out.println("请您输入操作功能“:"); int command = sc.nextInt(); switch (command) { case 1: // 上架: 独立功能独立成方法 addFood(); break; case 2: // 下架 removeFood(); break; case 3: // 展示 showAllFoods(); break; default: System.out.println("输入错误!"); } } } }最后在写一个测试类进行测试
package nuyoah.arraylist Case; /** * @Project_Name: ArrayListTest3.java * @Author: Natural Pride * @Date: 2025/2/15 17:44 * @Description:TODO */ public class ArrayListTest3 { public static void main(String[] args) { // 目标:完成菜品上架,浏览功能。结合面向对象编程和ArrayList. // 1、每个菜品是一个对象,定义菜品类,用于创建菜品对象封装菜品数据。 // 2、定义一个菜品操作类,用于创建菜品操作对象负责对菜品数据进行业务处理。 FoodOperator operator = new FoodOperator(); operator.start(); } }运行结果:
七、Java常用API(2)由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“七、Java常用API(2)”