目录
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开始才支持的
构造器 | 说明 |
---|---|
public ArrayList() | 创建一个空的集合对象 |
常用方法名 | 说明 |
---|---|
public boolean add(E e) | 将指定的元素添加到此集合的末尾,返回是否添加成功 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中的元素的个数 |
public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
public boolean remove(Object o) | 删除指定的元素,返回删除是否成功 |
public E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
注意:
- 调用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
学习自:黑马程序员——JavaSE课程