【问题标题】:Is this an 'easy to understand' data structure? [closed]这是一个“易于理解”的数据结构吗? [关闭]
【发布时间】:2013-03-01 13:39:43
【问题描述】:

这是一个项目列表的数据结构,其中每个列表包含 一个包含 4 个字符串的列表,每个包含 4 个项目的列表包含一个包含 5 个字符串的列表:

List<List<List<String>>> l = new ArrayList<ArrayList<ArrayList<String>>>();

有没有更“可读”的方式来定义这个数据结构?

jsp 文件需要这种结构来显示数据。

【问题讨论】:

  • 不好理解
  • 这就是 cmets 的用途。
  • 您对结构的描述似乎没有反映在指定的结构中。
  • 你为什么要使用这样的东西?
  • 这不是您要搜索的代码 - Obi-Wan

标签: java data-structures


【解决方案1】:

尝试使用类,为事物赋予一个有意义的名称,而不是“字符串列表列表”,这根本没有意义。

除了描述技术方面,类型名称还应该描述含义

每当您最终编写出像这样的代码时,您就需要开始做 OOP!

因为迟早你会使用带有这样意大利面条代码的数据结构:

 if (a.get(0).get(0).get(0).equals("banana")) {

啊啊啊。错误代码警告!开始命名类并添加方法。

【讨论】:

    【解决方案2】:

    是的,有。

    List<List<List<String>>> l = new ArrayList<>(); 
    

    (适用于 java 1.7 或更高版本)

    【讨论】:

    • 它是一个可读性更强的构造函数,但数据结构仍然像以前一样不可读。
    • @Anony-Mousse BTW,作者询问了 constructor 结构:)
    • 是的,我已经看到了。但这并不意味着这样做是正确的。 ;-) 另外,它仍然是空的——在这个结构中添加String 仍然是一团糟。但是您得到的 -1 恕我直言不公平,我给了您 +1 以提供直接插入代码。
    • @Anony-Mousse 问候
    【解决方案3】:

    我相信如果你真的因为一些可怕的原因需要这个结构,用类制作 OOP 模型,并制作一个转换器到 List&lt;List&lt;List&lt;String&gt;&gt;&gt;
    我相信理解你在做什么会容易得多,以后再维护它,如果你不只是抛出一个带有一些神秘逻辑的 3 维字符串列表。我保证如果你一年后回顾代码,你不会记得你是如何填充结构的所有原因,如果我得到一个使用这种结构的 3rd 方程序,我会不高兴。

    【讨论】:

      猜你喜欢
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      相关资源
      最近更新 更多