【问题标题】:How to merge two arrays into a respective 2d array?如何将两个数组合并为一个相应的二维数组?
【发布时间】:2018-04-06 02:57:32
【问题描述】:

所以我有两个数组:

        String movieList[] = {
            "A",
            "B",
            "C",
            "D",
            "E"
    };

    int gross[] = {
            623,
            333,
            516,
            389,
            448
    };

所以我看到了结合两个数组的问题,但是我该如何通过它各自的索引来做到这一点?

例如:

我正在尝试这样做:

result[][] = {{"A",1},{"B",2},{"C",3}...};

感谢您的任何帮助或建议!

【问题讨论】:

  • 尝试添加您尝试解决此问题的代码。
  • Stringint?你认为你会有什么样的阵列? Object?用例是什么? Map 可能是您正在寻找的东西。
  • 您的result 数组,正如您所描述的,不是二维的,而是一维的。此外,您似乎需要 JSON 输出。对吗?

标签: java arrays loops multidimensional-array


【解决方案1】:

您正在尝试将两种不同的数据类型合并为一种。

您可以:

  • 将 int 数组转换为 String
  • 创建一个类并将String对象和int值封装在一个对象中。

你需要了解你正在尝试做的事情的缺陷!

【讨论】:

    【解决方案2】:

    根据您的具体情况,一个选项是构建电影键和总值的哈希图。然后,使用 Jackson 等库将该映射转换为 JSON 字符串:

    Map<String,String> map = new HashMap<>();
    for (int i=0; i < movieList.length; ++i) {
        map.put(movieList[i], String.valueOf(gross[i]));
    }
    
    String json = new ObjectMapper().writeValueAsString(map);
    System.out.println(json);
    

    【讨论】:

    • 虽然这个问题看起来需要 JSON,但我认为这没有帮助。这个问题有一个数组初始化器,那里没有 JSON 字符串。
    • @leoderprofi 我正在等待 OP 的反馈,如果合适我会删除。
    • 我也很困惑 ;)
    【解决方案3】:

    这是我的代码:

    String movieList[] = { "A", "B", "C", "D", "E" };
    int gross[] = { 623, 333, 516, 389, 448 };
    Object obj[][] = new Object[movieList.length][2];
    for (int i = 0; i < movieList.length; i++) {
        obj[i][0] = movieList[i];
        obj[i][1] = gross[i];
    }
    

    【讨论】:

    • 这确实是 OP 所要求的,但您可能想指出这是多么糟糕的设计选择,并提出更惯用的建议。
    • @PatrickParker 我可以看到没有多少人对这样的对象设计感到高兴.. 为什么会这样?
    • @JCr8 java 主要是一种面向对象的语言,因此您应该考虑使用正确的类,而不是将所有数据填充到通用数组中。考虑:代码清晰、类型安全、代码可维护性。您的设计在所有这些方面都获得了 F。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多