ArrayList是什么
ArrayList表示一种集合,它是一个容器,用来装数据的,类似于数组。
Q: 那有了数组,为什么要有集合呢?
A: 因为数组一旦创建大小不变,比如创建一个长度为3的数组,就只能存储3个元素,想要存储第4个元素就不行。而集合是大小可变的,想要存储几个元素就存储几个元素,在实际工作中用得更多。
ArrayList常用方法
- 创建一个ArrayList的集合对象ArrayList <String> list = new ArrayList<>()
- 往集合中的某个索引位置处添加一个数据
list.add(0,"小威");
- 根据索引获取集合中某个索引位置处的值
list.indexOf("小威")
- 获取集合的大小
list.size()
- 根据索引删除集合中的某个元素值,会返回被删除的元素值
list.remove(0)
- 根据元素值删除某个元素,删除成功会返回true,反之false.
list.remove("小华")
- 修改某个索引位置处的数据,修改后会返回原来的值
list.set(1, "我")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ArrayList<String> list = new ArrayList<>(); list.add("小明"); list.add("小张"); list.add("小李"); System.out.println(list);
list.add(0,"小威"); System.out.println(list);
int index = list.indexOf("小威"); System.out.println(index);
System.out.println(list.size());
String s1 = list.remove(0); System.out.println(s1);
System.out.println(list.remove("小华"));
String s2 = list.set(1, "我"); System.out.println(s2); System.out.println(list);
|
ArrayList应用案例1
1.用户可以选购多个商品,可以创建一个ArrayList集合,存储这些商品
2.按照需求,如果用户选择了”枸杞”批量删除,应该删除包含”枸杞”的所有元素
1)这时应该遍历集合中每一个String类型的元素
2)使用String类的方法contains判断字符串中是否包含”枸杞”
3)包含就把元素删除
3.输出集合中的元素,看是否包含”枸杞”的元素全部删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| ArrayList<String> list = new ArrayList<>(); list.add("枸杞"); list.add("Java入门"); list.add("宁夏枸杞"); list.add("黑枸杞"); list.add("人字拖"); list.add("特级枸杞"); list.add("枸杞子");
for (int i = 0; i < list.size(); i++) { String s = list.get(i); if (s.contains("枸杞")){ list.remove(s); }else continue; i--; } System.out.println(list);
}
|
ArrayList应用案例2
- 在外卖系统中,每一份菜都包含,菜品的名称、菜品的原价、菜品的优惠价、菜品的其他信息。那我们就可以定义一个菜品类(Food类),用来描述每一个菜品对象要封装那些数据。
- 接着再写一个菜品管理类(FoodManager类),提供展示操作界面、上架菜品、浏览菜品的功能。
具体步骤
- 首先我们先定义一个菜品类(Food类),用来描述每一个菜品对象要封装那些数据。
- 接下来写一个菜品管理类,提供上架菜品的功能、浏览菜品的功能、展示操作界面的功能。
- 最后在写一个测试类Test,在测试类中进行测试。其实测试类,只起到一个启动程序的作用
Food类(实体类, POJO, JavaBean类)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| public class Food { private String name; private double originalPrice; private double specialPrice; private String info;
public Food() { }
public Food(String name, double originalPrice, double specialPrice, String info) { this.name = name; this.originalPrice = originalPrice; this.specialPrice = specialPrice; this.info = info; }
public String getName() { return name; }
public double getOriginalPrice() { return originalPrice; }
public double getSpecialPrice() { return specialPrice; }
public String getInfo() { return info; }
public void setName(String name) { this.name = name; }
public void setOriginalPrice(double originalPrice) { this.originalPrice = originalPrice; }
public void setSpecialPrice(double specialPrice) { this.specialPrice = specialPrice; }
public void setInfo(String info) { this.info = info; } }
|
FoodManager类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| package com.itheima.takeout;
import java.util.ArrayList; import java.util.Scanner;
public class FoodManager { private ArrayList<Food> foods = new ArrayList<>(); private Scanner sc = new Scanner(System.in); public void add(){ System.out.println("===菜品上架==="); Food food = new Food(); System.out.println("请您输入上架菜品的名称: "); String name = sc.next(); food.setName(name); System.out.println("请您输入上架菜品的价格: "); double price = sc.nextDouble(); food.setOriginalPrice(price); System.out.println("请您输入上架菜品的优惠价: "); double specialPrice = sc.nextDouble(); food.setSpecialPrice(specialPrice); System.out.println("请您输入上架菜品的其他信息: "); String info = sc.next(); food.setInfo(info); foods.add(food); System.out.println("恭喜你,上架菜品成功!"); } public void printAllFoods(){ System.out.println("===当前菜品信息如下==="); for(int i = 0; i < foods.size(); i++){ Food food = new Food(); System.out.println("菜品名称:" + food.getName()); System.out.println("菜品原价:" + food.getOriginalPrice()); System.out.println("菜品优惠价:" + food.getSpecialPrice()); System.out.println("其他描述信息:" + food.getInfo()); System.out.println("------------------------"); } } public void start(){ while (true){ System.out.println("====欢迎进入商家后台管理系统====="); System.out.println("1、上架菜品(add)"); System.out.println("2、浏览菜品(query)"); System.out.println("3、退出系统(exit)"); System.out.println("请您选择操作命令:"); String command = sc.next(); switch (command){ case "add": add(); break; case "query": printAllFoods(); break; case "exit": return; default: System.out.println("您输入的命令有误...."); } } } }
|
测试类
1 2 3 4 5 6 7
| public class ArrayListDemo { public static void main(String[] args) { FoodManager fm = new FoodManager(); fm.start(); } }
|