Java大数据开发和安全开发
- (一)Java的常用API:ArrayList集合
- 1.1 什么是集合?
- 1.2 有数组,为啥还学习集合?
- 1.3 ArrayList集合该怎么学呢?
- 1.3.1 创建ArrayList对象
- 1.3.ArrayList的增删改查操作
- 1.3.3 ArrayList集合的案例
(一)Java的常用API:ArrayList集合
1.1 什么是集合?
- 集合是一种容器,用来装数据的,类似于数组。
1.2 有数组,为啥还学习集合?
- 数组定义完成并启动后,长度就固定了。
- 集合大小可变,开发中用的更多
1.3 ArrayList集合该怎么学呢?
-
1、会提供创建容器对象的方式
-
2、会提供相应的方法对容器进行操作
- 添加数据
- 删除某个数据
- 修改某个数据
- 获取某个数据
ArrayList集合学习的步骤:1、创建对象 2、增删改查的方法3、容器的其他特点
1.3.1 创建ArrayList对象
创建一个没有类型的ArrayList的集合对象
import java.util.ArrayList;/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。**/
public class ArrayListDemo {public static void main(String[] args) {//1、创建一个没有类型的ArrayList的集合对象ArrayList list = new ArrayList();list.add("黑马");list.add(666);list.add(99.5);list.add("黑马");list.add("Java");System.out.println(list);}
}
创建一个指定类型的ArrayList的集合对象,两种写法:
第一种:
ArrayList<String> list = new ArrayList<String>();
第二种:
ArrayList<String> list = new ArrayList<>();
import java.util.ArrayList;/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。**/
public class ArrayListDemo {public static void main(String[] args) {//1、创建一个指定类型的ArrayList的集合对象//// 第一种写法:ArrayList<String> list = new ArrayList<String>();// 从jdk 1.7开始才支持的//第二种写法:ArrayList<String> list = new ArrayList<>();ArrayList<String> list = new ArrayList<>();list.add("黑马");list.add("黑马");list.add("Java");System.out.println(list);
1.3.ArrayList的增删改查操作
import java.util.ArrayList;/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。**/
public class ArrayListDemo {public static void main(String[] args) {//1、创建一个指定类型的ArrayList的集合对象//// 第一种写法:ArrayList<String> list = new ArrayList<String>();// 从jdk 1.7开始才支持的//第二种写法:ArrayList<String> list = new ArrayList<>();ArrayList<String> list = new ArrayList<>();list.add("黑马");list.add("黑马");list.add("Java");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,反之System.out.println(list.remove( "Java"));System.out.println(list);list.add( 1, "html");System.out.println(list);// 默认删除的是第一次出现的这个黑马的数据的System.out.println(list.remove( "黑马"));System.out.println(list);// 7、修改某个索引位置处的数据,修改后会返回原来的值给我们System.out.println(list.set(1,"黑马程序员"));System.out.println(list);}
}
1.3.3 ArrayList集合的案例
- 批量删除含有枸杞的产品
import java.util.ArrayList;
public class ArrayListDemo1 {public static void main(String[] args) {// 1、创建一个ArrayList集合对象ArrayList<String> list = new ArrayList<>();list.add("Java入门");list.add("宁夏枸杞");list.add("黑枸杞");list.add("人字拖");list.add("特级枸杞");list.add("枸杞子");System.out.println(list);// 2、开始完成需求:从集合中找出包含枸杞的数据并删除它for(int i=0;i<list.size();i++) {// i = 0 1 2 3 4 5// 取出当前遍历到的数据String ele = list.get(i);// 判断这个数据中包含枸杞if (ele.contains("枸杞")) {// 直接从集合中删除该数据list.remove(ele);}}System.out.println(list);}
}
[Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特级枸杞, 枸杞子]
[Java入门, 黑枸杞, 人字拖, 枸杞子]
以上代码未能全部删除含有枸杞的产品
全部删除的方法1:
import java.util.ArrayList;
public class ArrayListDemo1 {public static void main(String[] args) {// 1、创建一个ArrayList集合对象ArrayList<String> list = new ArrayList<>();list.add("Java入门");list.add("宁夏枸杞");list.add("黑枸杞");list.add("人字拖");list.add("特级枸杞");list.add("枸杞子");System.out.println(list);// 2、开始完成需求:从集合中找出包含枸杞的数据并删除它for(int i=0;i<list.size();i++) {// i = 0 1 2 3 4 5// 取出当前遍历到的数据String ele = list.get(i);// 判断这个数据中包含枸杞if (ele.contains("枸杞")) {// 直接从集合中删除该数据list.remove(ele);i--;}}System.out.println(list);}
}
全部删除的方法2:
import java.util.ArrayList;
public class ArrayListDemo1 {public static void main(String[] args) {// 1、创建一个ArrayList集合对象ArrayList<String> list = new ArrayList<>();list.add("Java入门");list.add("宁夏枸杞");list.add("黑枸杞");list.add("人字拖");list.add("特级枸杞");list.add("枸杞子");System.out.println(list);// 2、// 方式二:从集合的后面倒着遍历并删除for(int i = list.size()-1;i >= 0; i--) {// i = 0 1 2 3 4 5// 取出当前遍历到的数据String ele = list.get(i);// 判断这个数据中包含枸杞if (ele.contains("枸杞")) {// 直接从集合中删除该数据list.remove(ele);}}System.out.println(list);}
}
ArrayList的综合案例-模仿外卖系统中的商家系统
- 完成菜品的上架、以及菜品信息浏览功能
实现这个程序的首先创建实体类用来保存数据
- Food.java
- 这里保存创建菜单所需要的变量,但属性都是私有的,不允许别人访问修改
package com.qianxin.arraylist.xiangmu;public class Food {private String name;private double price;private String desc;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 double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}
在创建操作类,用来展示操作界面和实现新增和展示菜品功能
- FoodOperator.java
package com.qianxin.arraylist.xiangmu;import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Scanner;public class FoodOperator {// 1、定义一个ArrayLst集合对象,负责存储菜品对象信息private ArrayList<Food> foodlist= new ArrayList<>();public void addFood(){Food f= new Food();Scanner sc = new Scanner(System.in);System.out.println("请您输入该菜品的名字:");String name = sc.next();f.setName(name);System.out.println("请输入菜品的价格:");double price = sc.nextDouble();f.setPrice(price);System.out.println("请输入菜品的描述:");String desc = sc.next();f.setDesc(desc);foodlist.add(f);System.out.println("上架成功");}public void showAllFood(){for (int i = 0; i < foodlist.size(); i++) {Food f = foodlist.get(i);System.out.println(f.getName());System.out.println(f.getPrice());System.out.println(f.getDesc());System.out.println("------------------------------------------");}}public void start(){while (true) {Scanner sc = new Scanner(System.in);System.out.println("请输入你的选择:1.添加菜品 2.展示菜品 3.退出");String command = sc.next();switch (command){case "1":addFood();break;case "2":showAllFood();break;case "3":System.out.println("欢迎下次再来");return;default:System.out.println("您输入的不合法!");}}}}
最后创建主程序进行调用
ArrayTest1.java
package com.qianxin.arraylist.xiangmu;public class ArrayTest1 {public static void main(String[] args) {FoodOperator operator = new FoodOperator();operator.start();}
}