暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

深入理解ArrayList(二)

算法与编程之美 2018-04-09
89

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列博客。


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


问题描述

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


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


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

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


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


解决方案

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


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



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


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



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



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


总结

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


请大家继续思考,改进后的代码又存在什么问题呢?欢迎下方留言。


更多精彩文章:

深入理解ArrayList(一)

聊一聊JavaWeb面试

Java面试基础(一)

Java面试基础(二)

Java面试基础(三)

聊一聊单片机和服务器

50行代码实现简单的网站服务器

50行代码实现网站服务器 2

50行代码实现网站服务器 3

JDBC连接MYSQL数据库常见问题处理

一种基于状态机的 DOM 树生成技术(1)

一种基于状态机的 DOM 树生成技术(2)



四川旅游学院 where2go 团队


   

微信号:算法与编程之美          

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!欢迎转发!



文章转载自算法与编程之美,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论