码迷,mamicode.com
首页 > 其他好文 > 详细

存储在集合中的对象不应该含有基本数据结构的任何实现细节

时间:2019-09-30 11:13:19      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:链表   使用   耦合   属性   思考   com   技术   区分   src   

  

  开卷有益,最近正按计划巩固自己算法与数据结构的基础知识,目前看来收获开始很多的,重拾了很多遗忘的知识,注意到很多以前没有留意的细节。在复习使用链表实现栈是,注意到了一句话:“链表结构的细节内容应该与链表所存储的元素区分开来”。

 

  我试着去理解这句话中包含的东西,以前我使用的链表大概是这样的:

技术图片

 

 

   DATA是我们要存储的数据,如果我们想要用DATA实现链表结构,我们需要在DATA中添加一个存储DATA对象地址的变量next。之前我并没有意识到也没有去思考过这种使用方式会有什么缺陷,今天思考了一下,确实发现了这种使用方式的一些缺陷:

  1、为了使用链表存储DATA对象,DATA被迫存储了与自己无关的next变量。

  2、DATA必须明确的知道,自己会成为DATA对象链表中的一个元素。

  3、链表存储的数据和链表的结构耦合度过高,违背了集合实现细节与集合使用相分离的目标。

  解决以上问题的方案是,定义一个独立的节点类,节点类中仅包含两个成员属性,一个为指向下一节点的next,一个为指向本节点存储数据的data。next和data可以是指针,也可以是引用。

技术图片

 

  在java中,在可以设置data的类型为Object,因为Object是所有类的父类,利用向上转型,data可以指向任何类的对象,即我们定义的链表能够存储所有类型的数据。

 

   

存储在集合中的对象不应该含有基本数据结构的任何实现细节

标签:链表   使用   耦合   属性   思考   com   技术   区分   src   

原文地址:https://www.cnblogs.com/KenBaiCaiDeMiao/p/11611597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!