【问题标题】:Making a map for extendability in a java application在 Java 应用程序中制作可扩展性地图
【发布时间】:2012-10-29 23:28:19
【问题描述】:

所以我正在开发这个应用程序并编写这个类来解析一个 xml。我创建了一个代表我的 xml 文件的类,我想为它映射一些东西,并在以后使用该映射来扩展我的解析器的能力。举个例子:

我知道每个文件中都有一个 DATE,在我正在解析的当前版本的 XML 文件中,它是 <date>dateValue</date> 所以我想将我的通用字符串“DATE”映射到“date”,这样我就可以简单地参考数据结构(映射)并在键值(在本例中为“DATE”)获取值(“日期”)。 如果这就是我想做的所有事情,我只会使用哈希图。但是我添加了一些更复杂的东西,我有一个类来表示我从 xml 中提取的数据,比如:

public class myXML{
   String date;
   setDate(String input){
        this.date = input;
   }
}

所以我还想找到一种方法,用值“DATE”、“date”和现在的 setDate(“value”) 附加其他东西。 那么首先有没有一种将 2 个值链接到一个键的好方法? 其次,有没有一种好方法可以映射到一个函数,然后再使用它?比如

function = map.getFunctionValue("DATE");
myXML.function(someValue);

所有这些都是示例代码,所以请不要评论缺少构造函数或语法错误:)

提前谢谢!

【问题讨论】:

  • 您是否研究过 Java JDK (javax.xml.*) 附带的 XML 解析功能?您可能正在重新发明轮子。
  • 我不完全明白。也许您可以为哈希图使用容器对象?它可以有几个成员和所有你想要的方法。只需小心实现 equals 和 hashcode 方法。

标签: java data-structures hashmap


【解决方案1】:

Apache Commons 有 a MultiMap。不幸的是,我在标准库中没有看到。

根据the docs,他们似乎没有包含它,因为它并不经常需要。

multimap 类似于 Map,但它可以将每个键映射到多个值。 Java 集合框架不包含用于 多图,因为它们并不常用。这是一个相当 使用值为 List 实例的 Map 作为简单的事情 多地图。

至于第二个问题,Java 遗憾地缺乏一流的函数,因此没有优雅的方法可以做到这一点。您可以采用的各种方法包括使用自定义接口、包装类、反射和字节码破解。

【讨论】:

    【解决方案2】:

    试着看看Xstream,从这个related question得到它

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 1970-01-01
      • 2015-05-25
      • 2011-05-29
      • 2011-03-28
      • 2014-09-13
      • 2012-07-30
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多