【问题标题】:How to use Collections or Sets to organize data structures inside data structures in Java?如何使用 Collections 或 Sets 在 Java 中的数据结构中组织数据结构?
【发布时间】:2018-08-07 14:03:50
【问题描述】:

我有几个实体名称列表,它们组成了一个有组织的数据集,例如:

  • ENT_01
  • ENT_02
  • ...
  • ENT_nn

作为任意数量的不同实体名称列表(作为字符串),编号总是从 01nn

我打算做的是阅读它们,并创建一些利用实体根名称(例如 ENT)的数据结构,并将它的每个实例(例如 ENT_01、ENT_02)与其自身相关联。这意味着当我调用 ENT 时,我可以使用它(或其在 List、ArrayList 等中的位置)作为参数来检索整个编号的结构。问题是,我还需要一种方法来轻松访问每个编号的实体实例。

我考虑并尝试基于此question 实现一个“ArrayList of ArrayLists”,第一个是根名称,第二个包含实例,但它看起来效率低下且即兴发挥去做吧。

在 Java 中是否有任何结构或类(可能在 Collections 和/或 Sets 下)可以以更优雅和有效的方式实现?

【问题讨论】:

  • ENT_01 ... ENT_nnStringObject 或.. 对象数组 Ent[].. 它是什么?
  • 抱歉,ENT_01 实际上有一个专有扩展,但它将作为字符串输入并在后续处理。

标签: java arraylist collections set


【解决方案1】:

如果不知道您的数据究竟是什么样子,就很难说清楚,而且对于 SO 来说可能有点过分了。

但是,假设“ENT”是某个任意键(我假设它是一个字符串),您可以使用 Map<String, Entity>,其中 Entity 将是一个包含您的内部结构的类。

例子:

Map<String, Entity> entities = ...;

进一步假设内部元素 0 到 n 密集排列(即没有或只有小孔),您可以使用ArrayList(分配给List 属性)并使用get(index) 方法访问该索引处的元素。

例子:

class Entity {
  List<Element> elements = new ArrayList<>();

  Element getElement( int index ) {
    if( index < 0 || index >= elements.size() ) {
      return null; //out of range, i.e. no such element
    }

    return elements.get(index);
  } 
}

因此对元素“ENT_02”的查找可能如下所示:

//note that you'd need to handle "ENT" not being present, i.e. the get() returning null
entities.get( "ENT" ).getElement( 2 ); 

如果您的结构很简单,您实际上可以将其设为Map&lt;String, List&lt;Element&gt;&gt;,但我认为它不是那么简单或不会保持这种方式(即Entity 可能不仅仅包含元素列表)。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 2012-09-14
    • 2014-06-22
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多