集合和数组的对比(为什么要有集合)
分为俩点
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;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |