深入理解ArrayList(二)

简介: 深入理解ArrayList(二)

在上一讲深入理解ArrayList(一)根据需求写了一个非常简单的MyList,那么这个MyList到底有哪些问题呢?


问题描述

要知道用户的需求是随时发生变化的,但需求变化时,你写得代码是否能够适应这种变化,这体现出了一名开发者非常重要的能力。


假如用户现在的需求发生了变化,要你写一个能够添加整型数据的List,而不再是字符串类型的,此时你该怎么办呢?


可能有同学说这个很简单啊,我把String替换成Integer就可以了,如下:

这种做法确实能够满足用户新的需求,但是需要重新修改代码,重新编译,而且假如用户的需求再次发生变化,要你添加一个Double类型的数据呢?难道你又要重新修改一次代码吗?


显然这种方式是不可靠的,那么对于这种情况有没有解决方案呢?


解决方案

这里面就要给大家介绍一种新的技术来实现上述类型的不断变化需求,这种技术就是Java的泛型。


我们可以将用户要添加的元素类型做成一个参数,用户需要添加什么类型的元素,这种类型可以由用户自己指定,这种技术称之为泛型。



使用泛型了之后,由于我们不知道用户添加的元素到底是什么类型,因此底层的数组,我们不能再使用String[]这种类型,不能指定具体的数组类型,而应该使用一种能够保存任何类型数据的数组,什么数组能够保存任意类型的数据呢?


这个问题的答案就是Object[],因为Obejct是所有类的父类。



这就是最终我们修改的代码,下面我们将编写测试代码对其进行测试。



通过泛型机制我们就可以很好的实现不同元素类型的切换,无论用户要添加什么类型的元素,都不用修改代码,很好的适应用户的需求。


总结

本文针对上一讲设计的MyList存在的不能较好适应元素类型变化的问题,提出了使用泛型机制解决,进一步完善了代码,达到适应添加任何元素类型的需求。


目录
相关文章
|
1天前
|
存储 Java
ArrayList
ArrayList是线程不安全的,底层使用 Object[]存储数据,可以存储任何类型的对象,包括 null 值,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。 核心属性: private static final int DEFAULT_CAPACITY = 10;//默认容量 transient Object[] 存储元素的集合 private int size; 元素个数 构造方法: public ArrayList() ; public ArrayList(int initialCapacity) ; public ArrayList(Collection<?
|
21天前
|
安全 Java API
ArrayList 全面详解
关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。本文详细解析了Java集合框架中的ArrayList,包括其定义、特点、成员变量、构造函数、API、主要方法和扩容机制等。欢迎留言交流。
|
3月前
|
存储
ArrayList的使用
ArrayList的使用
19 3
|
安全 Java
你对ArrayList了解多少?
你对ArrayList了解多少?
42 0
|
存储 安全 Java
ArrayList引发的一系列问题
ArrayList引发的一系列问题
102 0
ArrayList引发的一系列问题
|
Java 测试技术 索引
深入理解ArrayList(三)
深入理解ArrayList(三)
69 0
|
存储 设计模式 算法
ArrayList和LinkedList
介绍ArrayList和LinkedList
详解ArrayList
1.数据结构 底层使用Object类型的数组实现,线程不安全,添加元素时如果内存已满则会开辟新空间,将原数组copy过去。
95 0
深入理解ArrayList(一)
深入理解ArrayList(一)
72 0