【问题标题】:better Data structure to map function with multiple parameters(keys)更好的数据结构来映射具有多个参数(键)的函数
【发布时间】:2015-10-18 15:17:19
【问题描述】:

我总是遇到一个案例:将两个对象映射到第三个对象。这就像函数 f(x,y) = z。有时,变量列表会更长。

这个概念的直接实现是这样的函数:

object myFun(Object x, Object y){
    if(x==xVal1 && y== yVal1){
         return zVal1;
    }else if(x==xVal2 && y== yVal2){
         return zVal2;
    }else if(){ }else if(){
    }
}

此实现仅在 xy 的候选值的大小较小时有效。

有没有更好的数据结构设计。当 xy 的值的组合空间增加时,上述实现将是不可能的(也不优雅)。

在乞讨时考虑了数组和地图。但是我无法解决双索引键问题的方式,因为 xy 都确定了一个值。

【问题讨论】:

  • 你能告诉我你想达到什么目标吗?
  • 您可以使用一对作为 Map 的键。 std::map<std::pair<Object,Object>, Object>。对于上述情况,您实际上不需要它,因为在您的示例中 xy 应该具有相同的值。所以检查xy是否相同,如果是,只需使用x从地图中检索数据
  • @knightrider,您的评论可能会奏效。谢谢。

标签: java c++ algorithm dictionary data-structures


【解决方案1】:

如果您希望数据结构使用两个键存储数据,然后使用相同的两个键检索它,为什么要重新发明轮子,请使用 Apache Commons Collection 库的 MultiHashMap

参考https://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/org/apache/commons/collections/MultiHashMap.html

【讨论】:

  • 谢谢。 MultiHashMap 不适合,因为 MultiHashMap 是 key=>Collection。此外,我的程序中只允许使用 Java/lang 包中的类(此处提供第 3 方)
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
相关资源
最近更新 更多