Java数据结构教程:如何实现可变长数组_变长数组java

👆👆👆

别忘了扫码领资料哦【高清Java学习路线图

【各学科****全套学习视频及配套资料********】

数据结构之可变长数组(一)

为了更好的操作数据,就出现了一种数据结构【可变长数组】。Java中的代表之作,就是ArrayList。

接下来的时间里,我们会使用Java来完成一个自定义的ArrayList,也可以让大家更好的学习和使用ArrayLst。

首先我们先要解决的问题是数据类型的单一性

因为数组在创建的时候,需要确定数据类型。但是实际开发中,数据类型可以说是千变万化的。单一的类型只能满足一种情况,不能满足其他情况。如果在实际使用中,每一次都要因为数据类型的问题,重新定义数组,而且要修改与之匹配的方法,这显然是非常麻烦的。

所以,这里就需要使用到Java中的一种方式 【泛型】来解决。那么首先我们来说【泛型】到底是什么。

泛型,按照我自己的总结,就是解决数据类型一致化,并且可以让代码灵活程度更好的一种方式。有同学就会想到一个问题,解决数据类型一致化???等等,这不还是数据类型单一吗?No No No 此一致,非彼单一。

上代码!!!

package com.qfedu.genericity;

class TestType<T> {
    public T test(T t) {
        return t;
    }
}

public class Demo1 {
    public static void main(String[] args) {
        test(10);
        test(3.15);
        
        TestType<String> tt = new TestType<String>();
        tt.test("213");
    }
    
    /**
     * 自定义泛型无意义占位符 T
     * @param t
     * @return
     */
    public static <T> T test(T t) {
        return t;
    }
}

可变长如何来完成(二)

数组在创建的时候,就已经确定了数组的容量,并且该容量是无法改变的。既然原数组的容量是不可以改变的,我们就创建新数组跟你们玩一玩~~~~

上代码~~~

package com.qfedu.newarray;

class TestArray {
    Object[] array = new Object[10];
    /*
     这里需要考虑一个数组的扩容方案
     */
    public void grow() {
        // 原数组的容量
        int oldCapacity = array.length;
        
        // 新数组容量
        int newCapacity = oldCapacity + oldCapacity / 2;
        
        Object[] newArr = new Object[newCapacity];
        
        // 数据的拷贝
        for (int i = 0; i < oldCapacity; i++) {
            newArr[i] = this.array[i];
        }
        
        this.array = newArr;
    }
}

public class Demo1 {
    public static void main(String[] args) {
        TestArray ta = new TestArray();
        
        System.out.println(ta.array.length);
        
        ta.grow();
        
        System.out.println(ta.array.length);
    }
}

————————————————附:Java视频教程————————————————

————————JAVA官方视频教程入口————————

–基础
2019千锋Java初识与职业发展 https://pan.baidu.com/s/1rCPncEyQHehIPgNQBEvcXQ
2019千锋Java工具教程 https://pan.baidu.com/s/1GCcFrHKasteIl9XCNrr0Gg
千锋Java教程-Java从入门到精通(小白必看) https://pan.baidu.com/s/1nKcYNVAa2GvXvFz2AnRXcA
–进阶
千锋Java教程-Html和CSS基础 https://pan.baidu.com/s/1G8Rek8a92skCYpIi_i8KeA
千锋Java教程-EasyUI框架入门 https://pan.baidu.com/s/1LiVA5MyRsd0t9LckAqpYSg
千锋Java教程-Web实战入门 https://pan.baidu.com/s/1wJIyZPQm3yQPil10fxcZmw
千锋Java教程-ElasticSearch6入门 https://pan.baidu.com/s/1oiY7r0K5Fapt-ko6YN6q4A
千锋Java教程-Hibernate框架从入门到实战 https://pan.baidu.com/s/1w7pr6bkN2GC_ZdWx0nTgyw
千锋Java教程-2天学会spring框架 https://pan.baidu.com/s/17UTqNqHo7aia8-SehRw6Hg
千锋Java教程-3天学会SpringMVC框架 https://pan.baidu.com/s/1c5ICHS0lAT7eF9kLcILbfA
千锋Java教程-容灾项目从入门到实战 https://pan.baidu.com/s/1mSOFO8VG8BEmt6uQSPmjHA
千锋Java教程-Mybatis框架从入门到实战 https://pan.baidu.com/s/1XbzhXIa1EdRNkVxYlh6fgQ
千锋Java教程-Spring框架实战 https://pan.baidu.com/s/1AJrTpBn0T3aYWTzCY3qDpA
千锋Java教程-框架实战教程 https://pan.baidu.com/s/1hw3Hgco1clknR9WNSE4kRg
千锋Java教程-Shiro框架从入门到实战 https://pan.baidu.com/s/14Lh5E0WFAK2n1ICbqis1ow
千锋Java教程-SSM框架从入门到实战 https://pan.baidu.com/s/1-FMMYjuJ6DFsJCVa8mSGZA
千锋Java教程-自定义框架实战 https://pan.baidu.com/s/101RH4HZ1_VmVIOhys1Hjtg
–高级
2019千锋Java教程-Java单体应用 https://pan.baidu.com/s/13WTZuzoBCJAO7xuYINGrdQ
2019千锋Java教程-Java微服务架构(SpringBoot+SpringCloud) https://pan.baidu.com/s/1A6HfYaFbRRTDzNoA5odtqg https://pan.baidu.com/s/1A6HfYaFbRRTDzNoA5odtqg")
2019千锋Java教程-Java微服务架构(SpringBoot+Dubbo+Zookeeper) https://pan.baidu.com/s/1GzHTsMVZVjg8ybvMXXwV4Q https://pan.baidu.com/s/1GzHTsMVZVjg8ybvMXXwV4Q")
千锋Java教程-cas单点登录解决方案 https://pan.baidu.com/s/1IwKwBO7PzukqruflrhGGVg
千锋Java教程-dubbo+zookeeper分布式系统架构基础 https://pan.baidu.com/s/1I-WGYaEhmRGkV_jczDboiw
千锋Java教程-互联网金融P2P项目实战 https://pan.baidu.com/s/1M9aHIjkB-f_Kg67DAXRe0w
千锋Java教程-自定义ORM、MVC框架实战 https://pan.baidu.com/s/1cpwwV2gl5UaUegndtQQc9g
千锋Java教程-Java版本控制实战 https://pan.baidu.com/s/1yahtDmEcCNBkL6-NBnXyKA
千锋Java教程-Java微服务架构实战 https://pan.baidu.com/s/1m2E_kP8qsbWj9a0whN1o3w
千锋Java教程-SpringBatch批处理实战 https://pan.baidu.com/s/13uOzcM6noaNvWqMEGldUgw
千锋Java教程-SpringBoot实战 https://pan.baidu.com/s/1UffBBNjZr8BnPbA5UIyr1g
千锋Java教程-SpringCloud全套视频(热门推荐) https://pan.baidu.com/s/16Zo0FtFuhfdojq923JrEew
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值