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官方视频教程入口————————

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值