java集合之ArryList

一、什么是集合

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

二、集合框架总体结构

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

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

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

三、ArrayList

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

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

四、主要方法

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

案例:

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

姓名 年龄 工资

zs 18 3000

ls 25 3500

ww 22 3200

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

(3) 删除ww 的信息

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

增:add(元素值)

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

如果Worker类不重写toString方法

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

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

源代码

Worker类
public class Worker{
    private int age;
    private String name;
    private double salary;

    public Worker() {

    }

    public Worker(String name, int age, double salary){
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public void work(){
        System.out.println(name + "work");
    }

    @Override
    public String toString() {
        return "Worker{" +
                "name=" + name  +
                ", age='" + age + '\'' +
                ", salary=" + salary +
                '}';
    }
}

WorkerListTest类
import java.util.ArrayList;
import java.util.List;

public class WorkerListTest {
    List <Worker> list  = new ArrayList();
    public void listInfo(){
        list.add(new Worker("zs",18,3000));
        list.add(new Worker("ls",25,3500));
        list.add(new Worker("ww",22,3200));
    }
    public void insertList(){
        list.add(1,new Worker("zl",24,3300));
    }
    public void deleteList(){
        list.remove(3);
    }
    public void setList(){
        list.set(1,list.get(2));
    }
    public void showList(){
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
    public void workList(){
        for (Worker woker: list
             ) {
            woker.work();
        }
    }

    public static void main(String[] args) {
        WorkerListTest wlt = new WorkerListTest();
        wlt.listInfo();
        wlt.insertList();
        wlt.deleteList();
        wlt.setList();
        wlt.showList();
        wlt.workList();
    }
}
运行结果

五、总结:

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值