ArrayList入门
ArrayList代表的是一种集合
那什么是集合?
- 集合是一种容器,用来装数据,类似于数组。
有数组为什么还要学习集合呢?
- 数组定义完成并启动后,长度就固定了。
- 但是这并不符合我们大多数的需求,而集合大小可变,开发中用得更多。
集合的种类
- HashSet
- List
- Map
- Set
- TreeSet
- ArrayList
- HashMap
- LinkedHashMap
- ......
ArrayList集合怎么学
ArrayList集合既然是一种容器,那么自然会提供创建容器对象的方式,以及提供相应的方法对容器进行操作:添加数据、删除某个数据、修改某个数据、获取某个数据。
所以我们要学习ArrayList的三点:
- 创建对象
- 增删查改的方法
- 容器的其他特点
ArrayList<E>
- 是用得最多、最常见的一种集合
尖括号内的E代表了容器可以存储什么数据类型,如果不写则代表可以存储任意数据类型。
例如:
//在创建ArrayList集合对象时 ArrayList list1 = new ArrayList(); ArrayList<String> list2 = new ArrayList<String>(); //list1这个集合可以存储任意类型的数据 //而list2因为加上了String的约束,所以只能存储String类型的数据 //JDK1.7开始才支持的
注意:
- 调用remove方法删除指定的元素而非指定的索引时,会删除出现的第一个指定的元素,不会删除后面与它相同的元素。
ArratList使用
通过完成一个简单的案例来掌握ArrayList的初步使用,
需求:
现在假如购物车中存储了如下这些商品:Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。现在用户不想买枸杞了,选择了批量删除,请完成该需求。
- 后台使用ArrayList集合表示购物车,存储这些商品名。
- 遍历集合中的每个数据,只要这个数据包含了“枸杞”则删除它。
- 输出集合看是否已经成功删除了全部枸杞数据了。
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