Java:ArrayList的基本使用(学习笔记)

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

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

 分为俩点
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.     }
复制代码
 



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表