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

分为俩点

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集合中,并遍历集合查看存储结果。

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

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

domain:


public class Teacher { private String name;
private String course; public Teacher() {
} public Teacher(String name, String course) {
this.name = name;
this.course = course;
} /**
* 获取
* @return name
*/
public String getName() {
return name;
} /**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
} /**
* 获取
* @return course
*/
public String getCourse() {
return course;
} /**
* 设置
* @param course
*/
public void setCourse(String course) {
this.course = course;
} public String toString() {
return "Teacher{name = " + name + ", course = " + course + "}";
}
}

main:

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

3.

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

domain:


public class Worker { private String name;
private int salary; public Worker() {
} public Worker(String name, int salary) {
this.name = name;
this.salary = salary;
} /**
* 获取
* @return name
*/
public String getName() {
return name;
} /**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
} /**
* 获取
* @return salary
*/
public int getSalary() {
return salary;
} /**
* 设置
* @param salary
*/
public void setSalary(int salary) {
this.salary = salary;
} public String toString() {
return "Worker{name = " + name + ", salary = " + salary + "}";
}
}

main:

  public static void main(String[] args) {
ArrayList<Worker> list = new ArrayList<>();
list.add(new Worker("张三",3000));
list.add(new Worker("李四",3500));
list.add(new Worker("王五",4000));
list.add(new Worker("赵六",4500));
list.add(new Worker("田七",5000)); //1.
if(contain(list,"王五")) {
int index = getIndex(list, "王五");
Worker worker = list.get(index);
worker.setName("王小五");
System.out.println(worker.toString());
} //2.
if(contain(list,"赵六")) {
int index = getIndex(list, "赵六");
Worker worker = list.remove(index);
System.out.println(worker.toString());
} //3.
if(contain(list,"田七")) {
int index = getIndex(list, "田七");
Worker worker = list.remove(index);
int salary = worker.getSalary() + 500;
worker.setSalary(salary);
System.out.println(worker.toString());
}
} //是否存在
public static boolean contain(ArrayList<Worker> list,String name) {
return getIndex(list,name) > 0;
} //获取元素的索引 存在返回索引,不存在返回-1
public static int getIndex(ArrayList<Worker> list,String name) {
for (int i = 0; i < list.size(); i++) {
Worker worker = list.get(i);
if(worker.getName().equals(name)){
return i;
}
}
return -1;
}

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. IIS 实现http重定向https(亲测有效:解决URL重写模块配置https重定向不生效的问题)

    前言 以前部署网站的时候,都是通过代码来实现http重定向https,最近在部署个人网站的时候,突发奇想可不可通过IIS来实现无代码的重定向呢? 在一番操作猛如虎的搜索引擎操作后,发现只有google ...

  2. centos7部署k8s(1master1node)

    〇.前言 就想多学学罢了 准备环境: centos7 master 8GB 172.26.130.204 centos7 node 8GB 172.26.130.205 yum源就阿里源就好... 一 ...

  3. 如何干涉MySQL优化器使用hash join

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 前言 实验 总结 前言 数据库的优化器相当于人类的大 ...

  4. 第六章:Django 综合篇 - 19:部署 Django

    补充说明:关于项目部署,历来是开发和运维人员的痛点.造成部署困难的主要原因之一是大家的Linux环境不同,这包括发行版.解释器.插件.运行库.配置.版本级别等等太多太多的细节.因此,一个成功的部署案例 ...

  5. 使用Elasticsearch Operator快速部署Elasticsearch集群

    转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...

  6. 使用kubeoperator自带的nginx-ingress-controller设置服务的ingress规则进行访问

    情况说明 当使用kubeoperator安装k8s集群的时候,在组件设置部分选择的ingress 类型是nginx-ingress yaml文件 k8s集群安装后,可以在节点的master主机的这个目 ...

  7. Elasticsearch:使用 Nginx 来保护 Elastic Stack

    文章转载自:https://elasticstack.blog.csdn.net/article/details/112213364

  8. 如何理解「数字化是 IT 公司在给传统企业贩卖焦虑」?

    焦虑,不是IT公司贩卖给传统企业的!这个论断本身就不成立!数字化的动因是企业内部,生产中的七大浪费还不够么?数据不畅导致的决策失败还少吗?去问下企业业主,诸如此类的问题多了去了,数字化服务商只是来帮着 ...

  9. NSIS检测到窗口最小化闪烁提示

    #检测到窗口为最小化时闪烁提示 !include nsDialogs.nsh #编写:水晶石 Name "IsIconic Example" OutFile "IsIco ...

  10. UVA12186 工人的请愿书 Another Crisis (树形DP)

    dp[i]表示要让i向上级发请愿书,最少需要多少个工人递交请愿书,因为要取前T%最小的,所以还要将i的子节点排序(这里用vector实现),取前c个最小的作为dp[i]的值. 这里用dfs可以省去dp ...