1- 集合概述

A) 面向对象编程语言对事物的描述都是通过对象来体现的。
为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,就不能是一个基本的变量,而应该是一个容器类型的变量。

B):到目前为止,学习过了哪些容器类型的数据呢?——StringBuilder,数组。
StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。
数组的长度是固定的, 如果有时候元素的个数不确定的,我们无法定义出数组的长度,这个时候,java就提供了集合类供我们使用。

2- ArrayList集合

2.1- ArrayList添加新元素

import java.util.ArrayList;/** 为什么会出现集合类:*        我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。*       为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,*       就不能是一个基本的变量,而应该是一个容器类型的变量。*      到目前为止,我们学习过了哪些容器类型的数据呢?StringBuilder,数组。*         StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。*      所以,我们目前只能选择数组了,也就是我们前面学习过的对象数组。*      但是,数组的长度是固定的,适应不了变化的需求,那么,我们该如何选择呢?*        这个时候,java就提供了集合类供我们使用。* * 集合类的特点:*        长度可变。* * ArrayList<E>:*       大小可变数组的实现* *        <E>:是一种特殊的数据类型,泛型。*        怎么用呢?*          在出现E的地方我们使用引用数据类型替换即可*          举例:ArrayList<String>,ArrayList<Student>* * 构造方法:*         ArrayList()* * 添加元素:*        public boolean add(E e):添加元素*       public void add(int index,E element):在指定的索引处添加一个元素*/
public class ArrayListDemo {public static void main(String[] args) {//创建集合对象ArrayList<String> array = new  ArrayList<String>();//add(E e):添加元素array.add("hello");array.add("world");array.add("java");//add(int index,E element):在指定的索引处添加一个元素//array.add(1, "android");System.out.println("array:"+array);}
}

2.2- ArrayList删改查方法

A)获取元素
public E get(int index):返回指定索引处的元素
B)集合长度
public int size():返回集合中的元素的个数
C)删除元素
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
D)修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素

import java.util.ArrayList;/** 获取元素*         public E get(int index):返回指定索引处的元素* 集合长度*       public int size():返回集合中的元素的个数* 删除元素*        public boolean remove(Object o):删除指定的元素,返回删除是否成功*        public E remove(int index):删除指定索引处的元素,返回被删除的元素* 修改元素*        public E set(int index,E element):修改指定索引处的元素,返回被修改的元素*/
public class ArrayListDemo2 {public static void main(String[] args) {//创建集合对象ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");//public E get(int index):返回指定索引处的元素//System.out.println("get:"+array.get(0));//System.out.println("get:"+array.get(1));//System.out.println("get:"+array.get(2));//public int size():返回集合中的元素的个数//System.out.println("size:"+array.size());//public boolean remove(Object o):删除指定的元素,返回删除是否成功//System.out.println("remove:"+array.remove("world"));//true//System.out.println("remove:"+array.remove("world"));//false//public E remove(int index):删除指定索引处的元素,返回被删除的元素//System.out.println("remove:"+array.remove(0));//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素System.out.println("set:"+array.set(1, "android"));//输出System.out.println("array:"+array);}
}

2.3- ArrayList遍历

集合的遍历思想和数组的遍历思想相同
循环遍历容器,依次取出里面的元素即可

import java.util.ArrayList;/** ArrayList集合的遍历*       通过size()和get()配合实现的*/
public class ArrayListDemo3 {public static void main(String[] args) {//创建集合对象ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");//获取元素//原始做法System.out.println(array.get(0));System.out.println(array.get(1));System.out.println(array.get(2));System.out.println("----------");for(int x=0; x<3; x++) {System.out.println(array.get(x));}System.out.println("----------");//如何知道集合中元素的个数呢?size()for(int x=0; x<array.size(); x++) {System.out.println(array.get(x));}System.out.println("----------");//最标准的用法for(int x=0; x<array.size(); x++) {String s = array.get(x);System.out.println(s);}}
}

2.4- 代码示例

向集合中添加任意四个字符串,遍历集合,依次打印取出的字符串

import java.util.ArrayList;/** 存储字符串并遍历* * 分析:*       A:创建集合对象*       B:添加字符串元素*      C:遍历集合*/
public class ArrayListTest {public static void main(String[] args) {//创建集合对象ArrayList<String> array = new ArrayList<String>();//添加字符串元素array.add("向问天");array.add("刘正风");array.add("左冷禅");array.add("风清扬");//遍历集合for(int x=0; x<array.size(); x++) {String s = array.get(x);System.out.println(s);}}
}

给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上

import java.util.ArrayList;
/** 给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”,“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上。* * 分析:*         A:定义字符串数组*      B:创建集合对象*       C:遍历字符串数组,获取到每一个字符串元素*       D:把获取到的字符串元素添加到集合*      E:遍历集合*             要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台*/
public class ArrayListTest2 {public static void main(String[] args) {//定义字符串数组String[] strArray = {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};//创建集合对象ArrayList<String> array = new ArrayList<String>();//遍历字符串数组,获取到每一个字符串元素for(int x=0; x<strArray.length; x++) {//把获取到的字符串元素添加到集合array.add(strArray[x]);}//遍历集合for(int x=0; x<array.size(); x++) {String s = array.get(x);//要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台if(s.startsWith("张")) {System.out.println(s);}}}
}

A:)自定义一个学生类,学生中有姓名和年龄属性,生成满参构造与空参构造
生成属性对应的getter/setter方法
B:)在测试类中使用满参构造创建三个学生对象,然后将每个学生对象均添加到ArrayList集合中
C:)遍历这个ArrayList集合,依次打印出每个学生的姓名和年龄

public class Student {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;}
}
import java.util.ArrayList;/** 存储自定义对象并遍历* * 分析:*         A:定义学生类*        B:创建集合对象*       C:创建学生对象*       D:把学生对象作为元素添加到集合中*      E:遍历集合*/
public class ArrayListTest3 {public static void main(String[] args) {//创建集合对象ArrayList<Student> array = new ArrayList<Student>();//创建学生对象Student s1 = new Student("林青霞",28);Student s2 = new Student("张曼玉",30);Student s3 = new Student("景甜",25);Student s4 = new Student("柳岩",18);//把学生对象作为元素添加到集合中array.add(s1);array.add(s2);array.add(s3);array.add(s4);//遍历集合for(int x=0; x<array.size(); x++) {Student s = array.get(x);System.out.println(s.getName()+"---"+s.getAge());}}
}

创建一个Student类包含姓名和年龄属性
创建一个ArrayList集合
向集合中添加三个Student对象Student对象中姓名和年龄的数据均来自与键盘录入
最终遍历这个集合,取出Student对象以及里面属性的值

public class Student {private String name;private String age;public Student() {}public Student(String name, String age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}
import java.util.ArrayList;
import java.util.Scanner;/** 创建一个集合,存储学生对象,学生对象的数据来自于键盘录入,最后,遍历集合* * 注意:为了方便使用,我把学生类中的所有成员定义为String类型* * 分析:*      A:定义学生类*        B:创建集合对象*       C:键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量*       D:把学生对象作为元素存储到集合中*      E:遍历集合* */
public class StudentDemo {public static void main(String[] args) {//创建集合对象ArrayList<Student> array = new ArrayList<Student>();/*//键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Scanner sc = new Scanner(System.in);System.out.println("请输入学生姓名:");String name = sc.nextLine();System.out.println("请输入学生年龄:");String age = sc.nextLine();Student s = new Student();s.setName(name);s.setAge(age);//把学生对象作为元素存储到集合中array.add(s);*///为了提高代码的复用性,我把键盘录入数据给学生对象,并存储到集合中的动作用一个方法来实现//调用方法addStudent(array);addStudent(array);addStudent(array);//遍历集合for(int x=0; x<array.size(); x++) {Student s = array.get(x);System.out.println(s.getName()+"---"+s.getAge());}}/** 两个明确:*        返回值类型:void*      参数列表:ArrayList<Student> array*/public static void addStudent(ArrayList<Student> array) {//键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Scanner sc = new Scanner(System.in);System.out.println("请输入学生姓名:");String name = sc.nextLine();System.out.println("请输入学生年龄:");String age = sc.nextLine();Student s = new Student();s.setName(name);s.setAge(age);//把学生对象作为元素存储到集合中array.add(s);}
}

JAVA笔记- JAVA集合类之ArrayList详解相关推荐

  1. JAVA面试集合类之ArrayList详解

    ArrayList 构造方法 1.ArrayList():无参构造方法创建的ArrayList起始容量为0 private static final Object[] DEFAULTCAPACITY_ ...

  2. Java集合(四) LinkedList详解

      在上篇文章Java集合(三) ArrayList详解的学习和源码分析中,我们知道ArrayList是以数组实现,它的优势是查询性能高,劣势是按顺序增删性能差.如果在不确定元素数量的情况时,不建议使 ...

  3. java之yield(),sleep(),wait()区别详解-备忘笔记

    java之yield(),sleep(),wait()区别详解-备忘笔记 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如 ...

  4. (7)Java数据结构--集合map,set,list详解

    MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...

  5. java集合框架史上最详解(list set 以及map)

    title: Java集合框架史上最详解(list set 以及map) tags: 集合框架 list set map 文章目录 一.集合框架总体架构 1.1 集合框架在被设计时需满足的目标 1.2 ...

  6. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  7. 【转】Java魔法堂:String.format详解

    Java魔法堂:String.format详解   目录     一.前言     二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六.对 ...

  8. Java开源项目Hibernate包作用详解

    Java开源项目Hibernate包作用详解 本文引自:http://hi.baidu.com/nick6610/blog/item/70b58afa0d0eab9259ee90f7.html Jav ...

  9. 并发编程五:java并发线程池底层原理详解和源码分析

    文章目录 java并发线程池底层原理详解和源码分析 线程和线程池性能对比 Executors创建的三种线程池分析 自定义线程池分析 线程池源码分析 继承关系 ThreadPoolExecutor源码分 ...

最新文章

  1. Spring中的循环依赖及解决,2021Java精选面试实战总结整理
  2. 关于 Delphi 中流的使用(10): 压缩与解压缩进度 - 回复 ilst 的问题
  3. 【杂谈】GitHub上有哪些好用的爬虫(从Google百度,腾讯视频抖音,豆瓣知乎到不可描述)
  4. 往sde中导入要素类报错000732
  5. 自己改造 VSPaste 插件
  6. iptables上课内容
  7. FineBI:一个简单易用的自助BI工具
  8. 一维卷积神经网络_人人都能看得懂的卷积神经网络——入门篇
  9. free bsd x修改UTC-SCT
  10. 双边滤波方法原理与代码实践(附完整代码)
  11. AI2(App Inventor 2)离线版服务器(2019.8.25更新)
  12. pdf关键字高亮 java_Java PDF查找和高亮文本-Go语言中文社区
  13. 油菜的做法及营养知识详细介绍
  14. gitgerrit配置
  15. fiddler手机抓包配置代理后没有网络(手机不能上网)
  16. 教你搭个助我大学拿Offer的面试项目
  17. 什么是同类群组联合学习 (FLoC)?
  18. 【Linux 内核 内存管理】分区伙伴分配器 ② ( free_area 空闲区域结构体源码 | 分配标志位 | GFP_ZONE_TABLE 标志位区域类型映射表 |分配标志位对应的内存区域类型 )
  19. 【数论】基础数论概念
  20. 马云对话马斯克(全文):要警惕AI?该移民火星?如何更长寿?马化腾反对产业割裂和技术脱钩...

热门文章

  1. Android 知识梳理目录 - 好吧,这是一个很“干“的标题
  2. CLIP(Contrastive Language-Image Pre-Training)简介
  3. Error: Watching remote files is not supported.
  4. 23.大数据学习之旅——scala进阶
  5. vivo2020届在线编程考试—手机屏幕解锁模式(C++)
  6. 设置网络IP及DNS的批处理
  7. flinksql-Could not acquire the minimum required resources
  8. 分享最新SD模型创作美女写真艺术照片以及关键词分享
  9. Istio 1.6——迈向极简主义
  10. Unity3D高级动画(Animator)-动画状态机