繁体   English   中英

如何使用集合或集合来组织Java数据结构内部的数据结构?

[英]How to use Collections or Sets to organize data structures inside data structures in Java?

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

  • ENT_01
  • ENT_02
  • ...
  • ENT_nn

任意数量的不同实体名称(如Strings)列表始终从01nn编号。

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

我考虑并基于此问题尝试实现“ ArrayLists ArrayLists” ,第一个是根名称,第二个包含实例,但是这样做似乎效率低下且即兴。

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

不知道数据的真实性很难说,对于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<String, List<Element>>但我认为它不是那么简单,或者不会那样做(即Entity可能包含的内容不只是元素列表)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM