当前位置:   article > 正文

java集合之ArryList

arrylist

一、什么是集合

  1.  集合是Java API所提供的一系列类,可以用于动态存放多个对象。--集合只能存对象
  2.  集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类)
  3.  集合类可以自动扩容。
  4.  集合类全部支持泛型,是一种数据安全的用法。

二、集合框架总体结构

java.util.Set接口及其子类,set提供的是一个无序的集合;

java.util.List接口及其子类,List提供的是一个有序的集合;

java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构

三、ArrayList

ArrayList其实就是维护了一个数组,使用扩容机制使其长度可变,可以把它想象成是一个数组的工具类,能够快速的改变数组的元素和长度。

第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组。

四、主要方法

  1. 增:add(int index, element)
  2. add(element) //在index后面增加
  3. 删:remove(int index)
  4. 查:get(int index)
  5. 改:set(int index,E element)
  6. 判断是否为空 :isempty()

案例:

(1)建一个List,在List 中增加三个工人,基本信息如下:

姓名 年龄 工资

zs 18 3000

ls 25 3500

ww 22 3200

(2) 在ls 之前插入一个工人,信息为:姓名:zl,年龄:24,工资3300

(3) 删除ww 的信息

(4) 利用for 循环遍历,打印List 中所有工人的信息

增:add(元素值)
  1. List <Worker> list = new ArrayList();
  2. public void listInfo(){
  3. list.add(new Worker("zs",18,3000));
  4. list.add(new Worker("ls",25,3500));
  5. list.add(new Worker("ww",22,3200));
插:add(索引,元素值)
  1. public void insertList(){
  2. list.add(1,new Worker("zl",24,3300));
  3. }
删:remove(索引)
  1. public void deleteList(){
  2. list.remove(3);
  3. }
查:list.get(i)
  1. public void showList(){
  2. for (int i = 0; i < list.size(); i++) {
  3. System.out.println(list.get(i));
  4. }
  5. }

如果Worker类不重写toString方法

此查询就会输出地址,而不是元素值

改 :set(索引, 元素值)
  1. public void setList(){
  2. list.set(1,list.get(2));
  3. }

源代码

Worker类
  1. public class Worker{
  2. private int age;
  3. private String name;
  4. private double salary;
  5. public Worker() {
  6. }
  7. public Worker(String name, int age, double salary){
  8. this.name = name;
  9. this.age = age;
  10. this.salary = salary;
  11. }
  12. public int getAge() {
  13. return age;
  14. }
  15. public void setAge(int age) {
  16. this.age = age;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public double getSalary() {
  25. return salary;
  26. }
  27. public void setSalary(double salary) {
  28. this.salary = salary;
  29. }
  30. public void work(){
  31. System.out.println(name + "work");
  32. }
  33. @Override
  34. public String toString() {
  35. return "Worker{" +
  36. "name=" + name +
  37. ", age='" + age + '\'' +
  38. ", salary=" + salary +
  39. '}';
  40. }
  41. }
WorkerListTest类
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class WorkerListTest {
  4. List <Worker> list = new ArrayList();
  5. public void listInfo(){
  6. list.add(new Worker("zs",18,3000));
  7. list.add(new Worker("ls",25,3500));
  8. list.add(new Worker("ww",22,3200));
  9. }
  10. public void insertList(){
  11. list.add(1,new Worker("zl",24,3300));
  12. }
  13. public void deleteList(){
  14. list.remove(3);
  15. }
  16. public void setList(){
  17. list.set(1,list.get(2));
  18. }
  19. public void showList(){
  20. for (int i = 0; i < list.size(); i++) {
  21. System.out.println(list.get(i));
  22. }
  23. }
  24. public void workList(){
  25. for (Worker woker: list
  26. ) {
  27. woker.work();
  28. }
  29. }
  30. public static void main(String[] args) {
  31. WorkerListTest wlt = new WorkerListTest();
  32. wlt.listInfo();
  33. wlt.insertList();
  34. wlt.deleteList();
  35. wlt.setList();
  36. wlt.showList();
  37. wlt.workList();
  38. }
  39. }
运行结果

五、总结:

在用到ArryList时,最好和泛型一起使用,否则容易出现类型转化错误,对于初学者而言,数组下标越界的事情也常有发送,这需要使用者去仔细的理清楚逻辑关系

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/766501
推荐阅读
相关标签
  

闽ICP备14008679号