当前位置: 首页 > 知识库问答 >
问题:

按索引将数组中的元素分组到列表中

漆雕硕
2023-03-14
    Map<String, Object[]> map = new HasMap<>();

    Object[] ints = Stream.of(1,2,3,4,5).toArray();
    Object[] dobules = Stream.of(1.0,2.0,3.0,4.0,5.0).toArray();
    Object[] strings = Stream.of("a","b","c","d","e").toArray();

    map.put("ints", ints);
    map.put("doubles", dobules);
    map.put("strings", strings);

{"ints": 1, "doubles":1.0, "strings":"a"},
{"ints": 2, "doubles":2.0, "strings":"b"},
{"ints": 3, "doubles":3.0, "strings":"c"},
{"ints": 4, "doubles":4.0, "strings":"d"},
{"ints": 5, "doubles":5.0, "strings":"e"}

共有1个答案

颜均
2023-03-14

简单的老办法:

List<Map<String, Object>> result = new ArrayList<>();

if(!map.isEmpty()) 
    // Assume all the array lengths are the same
    int length = map.values().iterator().next().length;

    for(int i = 0; i < length; i++) {
        Map<String, Object> row = new HashMap<>();
        for(Map.Entry<String, Object[]> entry : map.entrySet()) {
           row.put(entry.getKey(), entry.getValue()[i]; 
        }
        result.add(row);
    }
}

混合办法:

int length = map.values().iterator().next().length;

for(int i = 0; i < length; i++) {
    final int index = i; // make compiler happy
    result.add(map.entrySet()
                  .stream()
                  .collect(toMap(Map.Entry::getKey, e -> e.getValue()[index])));
}

纯函数方法:

int length = map.isEmpty() ? 0 : map.values().iterator().next().length;

List<Map<String, Object>> result = 
    IntStream.range(0, length)
             .boxed()
             .map(i -> map.entrySet()
                          .stream()
                          .collect(toMap(Map.Entry::getKey, e -> e.getValue()[i])))
             .collect(toList());
 类似资料:
  • 问题内容: 给定n个元素的数组,即 我可以编写一个扩展,以便可以修改数组以实现以下输出: 有没有一种方法可以实现将数组移动任何索引(正数或负数)的功能。我可以使用子句以命令式方式实现此功能,但我正在寻找的是功能性实现。 该算法很简单: 通过提供的索引将数组分为两个 将第一个数组附加到第二个数组的末尾 有什么方法可以以功能样式实现它吗? 我完成的代码: 问题答案: 您可以使用远程下标并连接结果。这将

  • 我已经创建了一个的数组: 我的问题是现在如何访问其中一个数组的元素。例如,我可以通过以下方式访问(或在示例打印中)整个数组元素: 但是如何访问所拥有的数组中的第一个元素呢?我尝试了所有方法,比如,但当数组是链接列表的元素时,我不知道如何访问数组中的元素。

  • 问题内容: 在Python中,我们可以使用来获取数组中值的索引。 但是,当我尝试执行NumPy数组时: 我得到: AttributeError:“ numpy.ndarray”对象没有属性“ index” 我如何在NumPy数组上执行此操作? 问题答案: 使用来获得,其中一个给定的条件是指数。 例子: 对于称为的2D : 对于一维数组: 请注意,这也适用于像条件,,等等… 您也可以使用方法创建的子

  • 问题内容: 我想做一些类似于此处NumPy数组的操作,更改不在索引列表中的值,但不完全相同。 考虑一个数组: 我知道我可以通过索引列表访问其元素,例如: 但是我还需要访问那些 不在列表中的元素。天真地,这是: 正确的方法是什么? 问题答案: In [170]: a = np.array([0.2, 5.6, 88, 12, 1.3, 6, 8.9]) In [171]: idx=[1,2,5] I

  • 问题内容: 假设我有以下代码: 我可以手动调用下一个函数多次,以使2个数组按“相同名称”分组。 问题是我不知道变量值,在这种情况下为“ dinner”和“ lunch”,因此我想按名称自动对这个statEvents数组进行分组,所以当名称不同时,我会得到尽可能多的数组。 我该怎么办? 问题答案: 从Swift 4开始,此功能已添加到标准库中。您可以这样使用它: 斯威夫特3: 不幸的是,上面的函数复