ArrayList相当于集合,作为一种容器存储数据,与数组类似。不同的是,ArrayList中长度可变,而数组长度不可变。
ArrayList相关API
构造器
public ArrayList() 创建一个空的集合对象
ArrayList<String>arr=new ArrayList<>();
长度获取
public int size()
添加元素
public boolean add(E e)将指定元素添加到此集合末尾
arr.add("Java");
arr.add("黑马");
public void add(int index,E element)在集合中指定位置插入指定的元素
arr.add(1,"MySQL);
元素获取
public E get(int index)返回指定索引处的元素
String rs=arr.get(1);
System.out.println(rs);
删除元素
public E remove(int index)删除指定索引处的元素,并返回
arr.remove(1);
arr.remove(2);
public boolean remove(Object O)删除指定的元素,并返回是否删除成功
arr.remove("Java");
修改元素
public E set(int index,E element)修改指定索引处的元素,返回原来的值
arr.set(1,"IDEA");
ArrayList相关案例
从集合中批量删除元素
两种方式,一种是从左往右,一种是从右往左,操作有些许不同
package com.itheima.hello;
import java.util.ArrayList;
import java.util.Scanner;
public class HelloWorld {
public static void main(String args[])
{
ArrayList<String> arr=new ArrayList<>();
arr.add("Java入门");
arr.add("黑枸杞");
arr.add("人字拖");
arr.add("宁夏枸杞");
arr.add("特级枸杞");
arr.add("枸杞子");
delete(arr);
System.out.println(arr);
for(int i=0;i<arr.size();i++)//从左往右遍历,要注意删完元素后,后面的元素会往前移动,但同时i又会往后移动,因此可能有元素会被错过
{
String se=arr.get(i);
if(se.contains("枸杞"))
{
arr.remove(i);
i--;
}
}
System.out.println(arr);
}
public static void delete(ArrayList<String>arr)
{
ArrayList<String>arr1=new ArrayList<>(arr);//new一个,使用arr1,避免修改arr
for(int i=arr1.size()-1;i>=0;i--)
{
String se=arr1.get(i);
if(se.contains("枸杞"))
{
arr1.remove(i);
}
}
System.out.println(arr1);
}
}
使用ArrayList实现一个菜单
Food.java
package com.itheima.hello;
public class Food {//菜品类
private String name;//菜品名称
private String desc;//描述
private double price;//价格
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 String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
if(price<0){
System.out.println("价格设置错误,请重新设置");
return;
}
this.price = price;
}
}
FoodOperator.java
package com.itheima.hello;
import java.util.ArrayList;
import java.util.Scanner;
public class FoodOperator {//菜品操作类,负责完成对菜品的业务实现
private ArrayList<Food>foods=new ArrayList<>();//创建一个Food类,来存取数据
public void addFood()//添加菜品
{
Scanner sc=new Scanner(System.in);
Food f=new Food();
System.out.println("请输入菜品名称:");
String name=sc.next();
f.setName(name);
while(true)
{
System.out.println("请输入菜品价格:");
double price=sc.nextDouble();
f.setPrice(price);
if(price>0)break;
}
System.out.println("请输入菜品描述:");
String desc=sc.next();
f.setDesc(desc);
foods.add(f);//将它添加到集合中
}
public void showfood()
{
if(foods.size()==0)
{
System.out.println("您没有添加任何菜品,快去添加菜品吧");
return;
}
for (int i = 0; i < foods.size(); i++) {
Food fo=foods.get(i);
String name=fo.getName();
double price=fo.getPrice();
String desc=fo.getDesc();
System.out.println(name);
System.out.println(price);
System.out.println(desc);
System.out.println("-------------");
}
}
public void start()
{
while (true)
{
System.out.println("1.添加菜品");
System.out.println("2.展示菜品");
System.out.println("3.退出系统");
System.out.println("请选择您的操作:");
Scanner sc = new Scanner(System.in);
String id = sc.next();
switch (id) {
case "1":
addFood();
break;
case "2":
showfood();
break;
case "3":
System.out.println("欢迎下次光临");
return;
default:
System.out.println("输入指令错误,请重新输入");
break;
}
}
}
}
HelloWorld.java
package com.itheima.hello;
import java.util.ArrayList;
import java.util.Scanner;
public class HelloWorld {
//设计一个菜品的展示界面
//进行上架功能,添加商品名字,商品价格,商品描述
//进行展示,显示所有的商品及其信息
public static void main(String args[])
{
FoodOperator foodop=new FoodOperator();//相当于设计了一个页面
foodop.start();
}
}