【问题标题】:Combination of data from HashMaps java [closed]来自HashMaps java的数据组合[关闭]
【发布时间】:2015-09-29 02:16:41
【问题描述】:

HashMap 有四种:AB、BA、BC 和 CB。

AB.put(A1, new String(){B1, B2});

BA.put(B1, new String(){A1});
BA.put(B2, new String(){A1});

BC.put(B1, new String(){C1});
BC.put(B3, new String(){C1});

CB.put(C1, new String(){B1});
CB.put(C1, new String(){B3});

有没有算法可以实现以下组合?

Input         Output
=====         =====
B, A, C         B1, A1, C1

A, B            A1, B1
                A1, B2

A, B, B         A1, B1, B1
                A1, B1, B2
                A1, B2, B1
                A1, B2, B2


A, C            A1, C1

【问题讨论】:

  • 有没有算法可以实现下面的组合?有!你(大概)是用它写的。
  • 如果您希望有人推断这些关系,您需要更清楚这些值是什么。例如,BAC 是什么?此外,它通常有助于将事物命名为不同于其他类型的对象,例如,AB 是字符串,XY 是哈希图。在您的示例中,读者看到字符ABC,但不清楚这里是什么。
  • 上面应该是Java代码吗?
  • @mvd,是的,你是对的,我已经修改了输入字符串。基本上映射是输入变量之间的关系。
  • @Andreas,不一定要在java中。我只是想知道是否有一个我不知道的现有算法来实现这种输出。

标签: java algorithm combinations


【解决方案1】:

答案是:不。

首先,你还没有定义你的规则。

您所做的有点像 SQL 连接,其中B, A, C 表示从 B 到 A 到 C 的连接,返回所有排列/组合。

但是A, B, B 是什么意思?从 A 到 B 到 B 的连接,但是没有从 B 到 B 的映射,所以结果应该是空的。

还有A, C?没有从 A 到 C 的连接,所以结果应该是空的。

但即使你定义了所有这些,因为它们是本土规则,你会发现没有库实现它们。

【讨论】:

    【解决方案2】:

    您确定您的输入和输出没有切换吗?一个输入怎么会有多个输出?在我看来,您可以将输出映射到输入,只需去除末尾的数字,例如,

    A1, B1, B2 -> A, B, B
    

    还有

    A1, B1, B1 -> A, B, B
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-27
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2011-04-04
      • 1970-01-01
      相关资源
      最近更新 更多