Java开发从入门到精通(十一):Java常用的API编程接口:ArrayList集合

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();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/619835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

波纹加载---

代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style…

【C语言】指针篇-初识指针(1/5)

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 **内存和地址(知识铺垫(了解即可))**如何理解编址**指针变量*…

【unity】【C#】游戏音乐播放和发布

今天我们来认识一下有关 unity 音乐的一些知识 我们先创建 AudioClips 文件夹&#xff0c;这个文件夹通常就是 unity 中存放音乐的文件夹&#xff0c;然后拖进音乐文件进去 这里为大家提供了两个音乐&#xff0c;有需要可以自取 百度网盘&#xff1a;https://pan.baidu.com/s…

泛域名/通配符SSL证书有免费的吗?怎么申请?

我们需要明确的是&#xff0c;市场上确实存在免费的泛域名SSL证书&#xff0c;但这些免费证书通常由自动化的证书颁发机构&#xff08;CA&#xff09;提供&#xff0c;如JoySSL、Lets Encrypt。这些免费证书虽然能够满足基本的加密需求&#xff0c;但在服务支持、保险额度、信任…

Python7种运算符及运算符优先级

🥇作者简介:CSDN内容合伙人、新星计划第三季Python赛道Top1 🔥本文已收录于Python系列专栏: 零基础学Python 💬订阅专栏后可私信博主进入Python学习交流群,进群可领取Python视频教程以及Python相关电子书合集 私信未回可以加V:hacker0327 备注零基础学Python 订阅专…

Rust - 所有权

所有的程序都必须和计算机内存打交道&#xff0c;如何从内存中申请空间来存放程序的运行内容&#xff0c;如何在不需要的时候释放这些空间&#xff0c;成了重中之重&#xff0c;也是所有编程语言设计的难点之一。在计算机语言不断演变过程中&#xff0c;出现了三种流派&#xf…

医疗大模型,巨头们的新赛场

配图来自Canva可画 说起近两年最热门的话题&#xff0c;那一定非大模型莫属了。众所周知&#xff0c;伴随着ChatGPT的强势出圈&#xff0c;全球范围内掀起了一波人工智能热潮&#xff0c;国内外的诸多企业都开足马力&#xff0c;推出了自己的大模型产品。而AI大模型产品的不断…

基于Vue的低代码可拔插自定义组件

背景说明 在低代码初期&#xff0c;各个厂商的前端低代码搭建框架基本集中在JQuery、Vue、React 等。但在低代码的实施阶段&#xff0c;对于前端的展示&#xff0c;都遇到了同一个挑战&#xff1a;部分场景下需要根据自身业务来定制表单组件&#xff08;如表单组件UI和业务逻辑…

虚拟机下CentOS7开启SSH连接

虚拟机下CentOS7开启SSH连接 自己在VMware中装了CentOS 6.3&#xff0c;然后主机&#xff08;或者说xshell&#xff09;与里面的虚拟机连不通&#xff0c;刚学习&#xff0c;一头雾水&#xff0c;查了半天&#xff0c;也不知道怎么弄。 在虚拟机&#xff08;Vmware Workstatio…

前端小技巧之轮播图

文章目录 功能htmlcssjavaScript图片 设置了一点小难度&#xff0c;不理解的话&#xff0c;是不能套用的哦&#xff01;&#xff01;&#xff01; &#xff08;下方的圆圈与图片数量不统一&#xff0c;而且宽度是固定的&#xff09; 下次写一些直接套用的&#xff0c;不整这些麻…

第二证券|A股突发!外资大动作!

A股走出独立行情&#xff01; 今天&#xff0c;日本、韩国股市大幅下挫&#xff0c;但A股早盘并未遭到太多影响&#xff0c;走出了强势拉升的独立行情。创业板指涨超2%&#xff0c;沪指、深成指涨超1%&#xff0c;富时我国A50指数期货直线拉升&#xff0c;涨幅超越2%。 尽管盘…

Qt for Android 配置 gradle

配置 gradle 版本 在 Qt Android 编译时需要配置对应的 gradle 版本才能正确编译。 创建模板 创建 android 模板 修改配置文件 进入 Android 目录 android 模板目录 2. 修改 gradle.properties 文件 org.gradle.jvmargs-Xmx2048m 改为 org.gradle.jvmargs-Xmx1024m3. 修…