1、集合的基本应用

数组的长度是固定的,集合的长度是可变的,集合具有自动扩容的功能。

数组可以存基本数据类型引用数据类型集合只能存储引用数据类型,基本数据类型只有设置成包装类才能存储在集合当中。

ArrayList成员方法

package GGG;import java.util.ArrayList;public class hhh {public static void main(String[] args) {//1、创建集合对象//泛型:限定集合中存储数据的类型ArrayList<String> list = new ArrayList<>();/*** 此时我们创建的是ArrayList的对象,而ArrayList是Java已经写好的一个类,* 这个类在底层做了一些处理* 打印对象不是地址值,而是集合中存储数据内容* 在展示的时候会用[]把所有的数据进行包裹*/System.out.println(list);   //打印空集合[]//1、添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");System.out.println(list);   //打印添加元素之后的集合[aaa, bbb, ccc, ddd, eee]//2、删除元素boolean result = list.remove("aaa");System.out.println(result);     //判断是否删除成功,trueSystem.out.println(list);   //打印删除元素之后的结果[bbb, ccc, ddd, eee]String str = list.remove(1);System.out.println(str);    //打印被删除的元素cccSystem.out.println(list);   //打印删除元素之后的结果[bbb, ddd, eee]//3、修改元素String result2 = list.set(1,"hhh");System.out.println(result2);    //打印被替换掉的元素,dddSystem.out.println(list);   //打印替换元素后的集合[bbb, hhh, eee]//4、查询元素String s = list.get(0);     //查询0索引上的元素System.out.println(s);  //查询到元素bbbSystem.out.println(list);}
}

2、集合练习-添加字符串和整数并遍历

案例1:集合的遍历方式

需求:定义一个集合,添加字符串,并进行遍历,遍历格式参照:[元素1,元素2,元素3]。

package GGG;import java.util.ArrayList;public class hhh {public static void main(String[] args) {//1、创建集合对象//泛型:限定集合中存储数据的类型ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//System.out.println(list);   //打印添加元素之后的集合[aaa, bbb, ccc, ddd, eee]System.out.print("[");for (int i = 0; i < list.size(); i++) {if(i == list.size() -1){System.out.print(list.get(i));} else {System.out.print(list.get(i) + ",");}}System.out.println("]");}
}

案例2:添加数字并遍历

需求:定义一个集合,添加数字,并进行遍历,遍历格式参照:[元素1,元素2,元素3]。

补充内容:基本数据类型对应的包装类如下

package GGG;import java.util.ArrayList;public class hhh {public static void main(String[] args) {//1、创建集合对象//泛型:限定集合中存储数据的类型ArrayList<Integer> list = new ArrayList<>();      //注意存储数据的类型为整数list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);System.out.println(list);   //打印添加元素之后的集合//循环遍历System.out.print("[");for (int i = 0; i < list.size(); i++) {if(i == list.size() -1){System.out.print(list.get(i));} else {System.out.print(list.get(i) + ",");}}System.out.println("]");}
}

3、添加学生对象并遍历的两个练习

案例1:添加学生对象并遍历

需求:定义一个集合,添加一些学生对象,并进行遍历。学生类的属性为:姓名、年龄。

package GGG;public class Student {//1、私有化成员变量//2、空参构造方法//3、带全部参数的构造方法//4、get/set方法private  String name;private  int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
package GGG;import java.util.ArrayList;public class hhh {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();//2、创建学生对象Student s1 = new Student("张三",23);Student s2 = new Student("李四",24);Student s3 = new Student("王二",22);//3、添加元素list.add(s1);list.add(s2);list.add(s3);for (int i = 0; i < list.size(); i++) {//i索引 list.get(i)  元素/学生对象Student stu = list.get(i);System.out.println(stu.getName() + "," + stu.getAge());}}
}

案例2:添加学生对象并遍历

需求:定义一个集合,添加一些学生对象,并进行遍历。学生类的属性为:姓名、年龄。要求:对象的数据来自键盘录入。

package GGG;public class Student {//1、私有化成员变量//2、空参构造方法//3、带全部参数的构造方法//4、get/set方法private  String name;private  int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
package GGG;import java.util.ArrayList;
import java.util.Scanner;public class hhh {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();//2、键盘录入学生的信息,并添加到集合当中Scanner sc = new Scanner(System.in);for(int i = 0; i < 3; i++){Student s = new Student();System.out.println("请输入学生的姓名:");String name = sc.next();System.out.println("请输入学生年龄:");int age = sc.nextInt();//把name和age赋值给学生对象s.setName(name);s.setAge(age);//把学生对象添加到集合当中list.add(s);}for (int i = 0; i < list.size(); i++) {//i索引 list.get(i)  元素/学生对象Student stu = list.get(i);System.out.println(stu.getName() + "," + stu.getAge());}}
}

4、集合练习-查找用户是否存在

案例1:添加用户对象,并判断是否存在

1、main方法中定义一个集合,存入三个用户对象。

用户属性为:id,username,password

2、要求:定义一个方法,根据id查找对应的用户信息。若存在返回true,若不存在返回false

package HHH;public class User {//1、私有化成员变量//2、空参构造方法//3、带全部参数的构造方法//4、get/set方法private  String id ;private  String username ;private   String password;public User() {}public User(String id, String username, String password) {this.id = id;this.username = username;this.password = password;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
package HHH;import java.util.ArrayList;
import java.util.Scanner;public class Dome {public static void main(String[] args) {ArrayList<User> list1 = new ArrayList<>();//2、键盘录入学生的信息,并添加到集合当中Scanner sc = new Scanner(System.in);User u1 = new User("001", "zhangsan", "123");User u2 = new User("002", "lisi", "456");User u3 = new User("003", "wanger", "789");list1.add(u1);list1.add(u2);list1.add(u3);boolean ss = search(list1, "005");System.out.println(ss);}public static boolean search(ArrayList<User> list,String id){for (int i = 0; i < list.size(); i++) {//i索引 list.get(i)  元素/用户对象User u = list.get(i);if(u.getId().equals(id)){return true;}}return false;}}

案例2:添加用户对象,并判断是否存在

1、main方法中定义一个集合,存入三个用户对象。

用户属性为:id,username,password

2、要求:定义一个方法,根据id查找对应的用户信息。若存在返回索引,若不存在返回-1

package HHH;public class User {//1、私有化成员变量//2、空参构造方法//3、带全部参数的构造方法//4、get/set方法private  String id ;private  String username ;private   String password;public User() {}public User(String id, String username, String password) {this.id = id;this.username = username;this.password = password;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
package HHH;import java.util.ArrayList;
import java.util.Scanner;public class Dome {public static void main(String[] args) {ArrayList<User> list1 = new ArrayList<>();//2、键盘录入学生的信息,并添加到集合当中Scanner sc = new Scanner(System.in);User u1 = new User("001", "zhangsan", "123");User u2 = new User("002", "lisi", "456");User u3 = new User("003", "wanger", "789");list1.add(u1);list1.add(u2);list1.add(u3);int ss = search(list1, "002");System.out.println(ss);}public static int search(ArrayList<User> list,String id){for (int i = 0; i < list.size(); i++) {//i索引 list.get(i)  元素/用户对象User u = list.get(i);if(u.getId().equals(id)){return i;}}return -1;}}

5、集合练习-返回多个数据

案例1:添加手机对象,并返回要求的数据。

需求:定义Javabean类:Phone

Phone属性:品牌、价格。

main方法中定义一个集合,存入三个手机对象。

分别为:小米,1000。苹果,8000。锤子,2999。

定义一个方法,将价格低于3000的手机信息返回。

package GGGG;import java.util.ArrayList;public class PhoneDome {public static void main(String[] args) {ArrayList<Phone> list = new ArrayList<>();Phone p1 = new Phone("小米",1000);Phone p2 = new Phone("苹果",8000);Phone p3 = new Phone("锤子",2999);list.add(p1);list.add(p2);list.add(p3);//新建集合,提取方法返回的集合ArrayList<Phone> phoneInfoList = printf(list);//循环遍历新得到的集合元素for (int i = 0; i < phoneInfoList.size(); i++) {Phone phone = phoneInfoList.get(i);System.out.println(phone.getName()+","+phone.getPrice());}}//由于返回值为对象,所以用ArrayList<Phone>作为返回值类型public static ArrayList<Phone> printf(ArrayList<Phone> list){/**技巧:* 如果我们要返回多个数据,可以先把这些数据放到一个容器当中,再把容器返回* 容器可以为 集合 数组*///定义一个集合用于存储价格低于3000的手机对象ArrayList<Phone> resultList = new ArrayList<>();for (int i = 0; i < list.size(); i++) {Phone p = list.get(i);//如果当前的手机价格低于3000,那么就把手机对象添加到resultList中if(p.getPrice() < 3000){//System.out.println(p.getName());//System.out.println(p.getPrice());resultList.add(p);}}return resultList;}
}

黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day11-ArrayList集合相关推荐

  1. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day10-字符串

    1.API和API帮助文档 API:应用程序接口. 简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可. JavaAPI:指的就是JDK中提供的各种功能的Java类.这些类将底层 ...

  2. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day15-阶段项目(拼图小游戏)(上篇)

    1.主界面分析 1.练习:创建主界面1 到IDEA中创建一个宽603像素,高680像素的游戏主界面 到IDEA中创建一个宽488像素,高430像素的登录界面 到IDEA中创建一个宽488像素,高500 ...

  3. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day12-学生管理系统

    基础版本: 需求:采取控制台的方式去书写学生管理系统. 分析: (1).初始菜单: (2).学生类: 属性:id.姓名.年龄.家庭住址. (3).添加功能: 键盘录入每一个学生信息并添加,满足以下要求 ...

  4. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day14-面向对象进阶02

    1.权限修饰符和代码块 1.1 权限修饰符 权限修饰符:是用来控制一个成员能够被访问的范围的. 可以修饰:成员变量.方法.构造方法.内部类. 巧计举例: private--------私有的----- ...

  5. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day7-综合练习

    1.卖飞机票 需求:机票价格按照淡季旺季.头等舱和经济舱收费.输入机票原价.月份和头等舱或者经济舱. 按照如下规则进行计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折:淡季(11月到来年4月 ...

  6. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day4-判断和循环

    1.顺序结构 顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行. 2.分支结构 1.if语句 (1).if语句的第一种格式,格式如下: if (关系表达式){语句体; } ...

  7. 黑马程序员Java零基础视频教程_下部(P52-P134)

    黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...

  8. 黑马程序员Java零基础视频教程_下部(P135-P200)

    黑马程序员Java零基础视频教程_下部(P135-P200) 1 多线程 1.1 什么是多线程? 1.2 多线程的并发与并行 1.3 多线程的实现方式 1.3.1 继承Thread类的方式进行实现 1 ...

  9. 黑马程序员Java零基础视频教程_上部(P1-P80)

    黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...

最新文章

  1. node/js 漏洞_6个可用于检查Node.js中漏洞的工具
  2. Refused to display 'xxx' in a frame ,because it set 'X-Frame-Options' to 'deny'.
  3. 前嗅ForeSpider教程:采集图片/视频/资源文件的链接地址
  4. i2cdetect检测不到i2c设备_I2C基础知识入门
  5. php奇数乘法表,PHP九九乘法表
  6. 中原银行签约神策数据 数据驱动构建智能服务体系
  7. URL、Session、Cookies、Server.Transfer、Application和跨页面传送。
  8. ITK:侵蚀二进制图像
  9. TensorFlow笔记(11) GoolgeNet
  10. JSP和Servlet相同点和不同点?
  11. 从 0 到 70%:Chrome 上位揭秘!
  12. 网络核心之数据交换-电路交换
  13. java检查文件的编码格式
  14. 上海计算机应用基础自考上机,2012年上海自考《计算机应用基础》上机考核大纲...
  15. 伴随方法:线性方程的伴随方程(Adjoint Equation)
  16. JavaScript 读写剪贴板之方式汇总
  17. html在线人数统计代码,做一个简单的网站统计和在线人数统计
  18. 服务器信号有杂音怎么回事,麦克风有杂音或电流声等的解决方法
  19. Javad 方法,方法的重载,递归,类,类的构造方法
  20. linux shell中'',和``的区别

热门文章

  1. Geomagic Wrap对齐
  2. 有没有便宜又好用的运动耳机?便宜实惠的运动耳机推荐
  3. 计算机二级Python结构图的深度、宽度、最大扇入数、最大扇出数
  4. 二阶段补充:文件上传服务端处理,后端文件上传、前端两种文件上传方式
  5. 服务器如何查看文件个数据库文件夹,服务器如何查看文件个数据库文件
  6. NGINX源码之:ngx_queue
  7. Linux常用文本编辑工具及常用指令
  8. 数据结构之栈 篇四——栈应用实现进制转换
  9. 良心安利食物 美食免抠元素素材网站
  10. 华三绕过console口密码