集合和数组的对比(为什么要有集合)

分为俩点

1. 长度:数组的长度是固定的,集合的长度是可变的。

2. 存储类型:

数组:可以存储基本数据类型,引用数据类型。

集合:只能存储引用数据类型。

小tips:

        基本数据类型在集合中存储要使用包装类

基本数据类型对应的包装类如下:

byte => Byte      short => Short

int => Integer     long => Long

float => Float     double => Double

boolean => Boolean

char => Character      

泛型

new ArrayList<泛型>();

泛型就是限定集合中存储数据的类型       

ArrayList成员方法

集合的常用的成员方法主要就是增删改查

E为泛型的类型

boolean add(E e);   添加元素,返回true或false

boolean remove(E e);  删除元素

E remove(int index); 删除指定索引的元素,返回删除的元素

E set(int index,E e); 修改指定索引的元素,返回修改前的元素

E get(int index); 获取指定索引的元素

int size(); 返回集合的长度,也就是集合中元素的个数

附上例题

1.现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。

  1. //现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。
  2. public static void main(String[] args) {
  3. ArrayList<String> list = new ArrayList<>();
  4. list.add("aaa");
  5. list.add("bbb");
  6. list.add("aaa");
  7. list.add("aaa");
  8. list.add("ccc");
  9. list.add("bbb");
  10. StringJoiner sj = new StringJoiner(", ", "[", "]");
  11. for (int i = 0; i < list.size(); i++) {
  12. sj.add(list.get(i));
  13. }
  14. System.out.println(sj);
  15. }

2. 请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息

domain:


  1. public class Teacher {
  2. private String name;
  3. private String course;
  4. public Teacher() {
  5. }
  6. public Teacher(String name, String course) {
  7. this.name = name;
  8. this.course = course;
  9. }
  10. /**
  11. * 获取
  12. * @return name
  13. */
  14. public String getName() {
  15. return name;
  16. }
  17. /**
  18. * 设置
  19. * @param name
  20. */
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. /**
  25. * 获取
  26. * @return course
  27. */
  28. public String getCourse() {
  29. return course;
  30. }
  31. /**
  32. * 设置
  33. * @param course
  34. */
  35. public void setCourse(String course) {
  36. this.course = course;
  37. }
  38. public String toString() {
  39. return "Teacher{name = " + name + ", course = " + course + "}";
  40. }
  41. }

main:

  1. //请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息,格式如下
  2. //姓名:赵老师, 专业:javase
  3. //姓名:钱老师, 专业:javaee
  4. //姓名:孙老师, 专业:php
  5. //姓名:李老师, 专业:python
  6. public static void main(String[] args) {
  7. ArrayList<Teacher> list = new ArrayList<>();
  8. list.add(new Teacher("xiaowang", "java"));
  9. list.add(new Teacher("xiaoming", "python"));
  10. list.add(new Teacher("xiaosu", "c++"));
  11. for (int i = 0; i < list.size(); i++) {
  12. System.out.println("姓名:" + list.get(i).getName() + "\t" + "课程:" + list.get(i).getCourse());
  13. }
  14. }

3.

  1. 有如下员工信息:
  2. 姓名:张三,工资:3000
  3. 姓名:李四,工资:3500
  4. 姓名:王五,工资:4000
  5. 姓名:赵六,工资:4500
  6. 姓名:田七,工资:5000
  7. 先需要将所有的员工信息都存入ArrayList集合中,并完成如下操作:
  8. 1、判断是否有姓名为“王五”的员工,如果有,改名为“王小五”
  9. 2、判断是否有姓名为“赵六”的员工,如果有,将其删除
  10. 3、给姓名为“田七”的员工,涨500工资

domain:


  1. public class Worker {
  2. private String name;
  3. private int salary;
  4. public Worker() {
  5. }
  6. public Worker(String name, int salary) {
  7. this.name = name;
  8. this.salary = salary;
  9. }
  10. /**
  11. * 获取
  12. * @return name
  13. */
  14. public String getName() {
  15. return name;
  16. }
  17. /**
  18. * 设置
  19. * @param name
  20. */
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. /**
  25. * 获取
  26. * @return salary
  27. */
  28. public int getSalary() {
  29. return salary;
  30. }
  31. /**
  32. * 设置
  33. * @param salary
  34. */
  35. public void setSalary(int salary) {
  36. this.salary = salary;
  37. }
  38. public String toString() {
  39. return "Worker{name = " + name + ", salary = " + salary + "}";
  40. }
  41. }

main:

  1. public static void main(String[] args) {
  2. ArrayList<Worker> list = new ArrayList<>();
  3. list.add(new Worker("张三",3000));
  4. list.add(new Worker("李四",3500));
  5. list.add(new Worker("王五",4000));
  6. list.add(new Worker("赵六",4500));
  7. list.add(new Worker("田七",5000));
  8. //1.
  9. if(contain(list,"王五")) {
  10. int index = getIndex(list, "王五");
  11. Worker worker = list.get(index);
  12. worker.setName("王小五");
  13. System.out.println(worker.toString());
  14. }
  15. //2.
  16. if(contain(list,"赵六")) {
  17. int index = getIndex(list, "赵六");
  18. Worker worker = list.remove(index);
  19. System.out.println(worker.toString());
  20. }
  21. //3.
  22. if(contain(list,"田七")) {
  23. int index = getIndex(list, "田七");
  24. Worker worker = list.remove(index);
  25. int salary = worker.getSalary() + 500;
  26. worker.setSalary(salary);
  27. System.out.println(worker.toString());
  28. }
  29. }
  30. //是否存在
  31. public static boolean contain(ArrayList<Worker> list,String name) {
  32. return getIndex(list,name) > 0;
  33. }
  34. //获取元素的索引 存在返回索引,不存在返回-1
  35. public static int getIndex(ArrayList<Worker> list,String name) {
  36. for (int i = 0; i < list.size(); i++) {
  37. Worker worker = list.get(i);
  38. if(worker.getName().equals(name)){
  39. return i;
  40. }
  41. }
  42. return -1;
  43. }

Java:ArrayList的基本使用(学习笔记)的更多相关文章

  1. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  2. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. Java程序猿的JavaScript学习笔记(1——理念)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  6. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  7. Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Java程序猿的JavaScript学习笔记(6——面向对象模拟)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  9. Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  10. 图灵学院JAVA互联网架构师专题学习笔记

    图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...

随机推荐

  1. 第八十篇:Vue购物车(一) 购物车基本框架

    好家伙,又是购物车 来吧,这是参照黑马的课程写的一个购物车 目录结构如下: 1.首先组件导入, Counter.vue <template> <div class="num ...

  2. 校园网跨网段共享文件Samba+SSH

    Introduction This tutorial contains screenshots for the English version of Windows 10. Separate inst ...

  3. MySQL数据库如何线上修改表结构

    一.MDL元数据锁 在修改表结构之前,先来看下可能存在的问题. 1.什么是MDL锁 MySQL有一个把锁,叫做MDL元数据锁,当对表修改的时候,会自动给表加上这把锁,也就是不需要自己显式使用. 当对表 ...

  4. 从 Linux 内核角度探秘 JDK NIO 文件读写本质

    1. 前言 笔者在 <从 Linux 内核角度看 IO 模型的演变>一文中曾对 Socket 文件在内核中的相关数据结构为大家做了详尽的阐述. 又在此基础之上介绍了针对 socket 文件 ...

  5. 《Java编程思想》读书笔记(五)

    前言:本文是<Java编程思想>读书笔记系列的最后一章,本章的内容很多,需要细读慢慢去理解,文中的示例最好在自己电脑上多运行几次,相关示例完整代码放在码云上了,码云地址:https://g ...

  6. 1000粉!使用Three.js实现一个创意纪念页面 🏆

    声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 不知不觉,掘金关注者人数已经超过 1000 人,因此特地做了这个页面纪念一 ...

  7. Logstash:Grok filter 入门

    转载自: https://blog.csdn.net/UbuntuTouch/article/details/105922198 Logstash模式:https://www.elastic.co/g ...

  8. Solutions:Elastic workplace 搜索:随时随地搜索所有内容 (一)

  9. 0-mysql数据库下载及安装

    1 下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2 安装mysql源 yu ...

  10. 【持久层框架】- SpringData - JPA

    SpringData - JPA 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! JPA简 ...