1.学习目的
在做项目的时候,往往需要在进行数据的输入,我们一般想到的是数组,但是数组成立的时候需要输入数组的长度,在实际生活中输入的长度往往是未知的,且输入的数据可能出现重复,此时,数组不再适用
package com.zyp;
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
int[] arr=null;
arr=new int[5];
for (int i = 0; i < arr.length+1; i++) {
arr[i]=i;//会报错,因为长度超过规定的长度
}
ArrayList<String> arrayList=new ArrayList<>();
for (int i = 0; i < 200; i++) {
arrayList.add(i+"");//不会报错,因为长度不限
}
}
}
2.用途
用于需要不断输入数据的的项目,如饿了么软件的注册商家
3.如何使用
语法:ArrayList<E>
相关使用方法
package com.xaca;
import java.util.ArrayList;
public class Test2 {
public static void main(String[] args) {
//创建一个ArrayList的集合对象,规范写法
//ArrayList<String> list=new ArrayList<String>();
ArrayList<String> list=new ArrayList<>();//标准写法
//向list添加数据
list.add("黑马");
System.out.println(list);
//2.往集合中的某个索引位置处添加一个元素
list.add(1,"Mysql");
System.out.println(list);
//3.根据索引获取集合中某个索引位置处的值
String rs=list.get(1);
System.out.println(rs);
//4.返回集合存储的元素个数
System.out.println(list.size());
//5.删除指定索引处的元素,返回被删除的元素值
System.out.println(list.remove(1));
System.out.println(list);
//6.直接删除某个第一个出现元素值,成功返回true,否则是false
System.out.println(list.remove("黑马"));
//7.修改某个指定索引的数据,修改后会返回原来的数据
list.add("zyp");
System.out.println(list.set(0,"zx"));
System.out.println(list);
}
}
4.浅谈设计者关于该API的设计
涉及到泛型的使用
其一:根据定义语法:ArrayList<type>
type的标识限定了集合内数据的类型
其二:关于ArrayList的类型,这个是引用数据类型,所以该数据类型能够对该对象的数据进行增、删、改、查
5.类比其他概念
ArrayList与Array不同点:1.ArrayList里面数据长度没有限制,而Array有
2.ArrayList所构成的集合,需要通过方法进行不停的调用,而Array直接通过索引进行使用
3..ArrayList的数据可以重复,而Array不能
ArrayList与Array相似点:1.ArrayList使用泛型进行数据类型的限制,Array通过type[] arr进行限制
2.都是引用数据类型
6.实际应用操作
创建一个饿了么添加菜品
第一步:进行食品的打包
package com.zyp;
public class Food {
private String name;
private double price;
private String miaoshu;//描述
public Food() {
}
public Food(String name, double price, String miaoshu) {
this.name = name;
this.price = price;
this.miaoshu = miaoshu;
}
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 getMiaoshu() {
return miaoshu;
}
public void setMiaoshu(String miaoshu) {
this.miaoshu = miaoshu;
}
@Override
public String toString() {
return this.getName()+"\t"+this.getPrice()+"\t"+this.getMiaoshu();
}
}
第二步:进行操作界面的打造,包括上架、展示菜品和操作界面的打造
package com.zyp;
import java.util.ArrayList;
import java.util.Scanner;
//菜品操作类,负责对菜品上架与浏览功能
public class FoodOperator {
//1.定义集合,存储菜品信息
private ArrayList<Food> Foods=new ArrayList<>();
//foods={}
//2.开发功能,上架菜品功能
public void addFood(){
//3.创建一个菜品对象,封装上架菜品信息
Food food=new Food();
//4.录入菜品信息,录入需要以下API的帮助
Scanner sc=new Scanner(System.in);
System.out.println("请您输入菜品名称");
String name= sc.next();
food.setName(name);
System.out.println("请您输入菜品价格");
double price=sc.nextDouble();
food.setPrice(price);
System.out.println("请您输入菜品描述");
String miaoshu= sc.next();
food.setMiaoshu(miaoshu);
//5.把菜品对象存入集合中
Foods.add(food);
System.out.println("上架成功");
}
//6.展示菜品
public void show(){
if (Foods.size()==0){
System.out.println("什么菜品都没有");
return;
}
for (int i = 0; i < Foods.size(); i++) {
Food f=Foods.get(i);
System.out.println(f);
}
}
//7.展示操作界面
public void start(){
while (true){
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":
addFood();
break;
case "2":
show();
break;
case "3":
System.out.println("下次再来");
return;//干掉方法
default:
System.out.println("输入不合法");
}
}
}
}
第三步:进行测试
package com.zyp;
import java.util.ArrayList;
public class ArrayListTest2 {
public static void main(String[] args) {
//完成拓展案例:商家商品上架
//1.设计菜品类。负责创建菜品对象
//2.设计一个菜品操作类(上架)
FoodOperator f1=new FoodOperator();
f1.start();
}
}