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

如何将地图集合分成多个列表

云令
2023-03-14

我有一个映射集合,其中包含productId、数量和订单数量的列表,格式为productId=[quantity,no of orders]。地图收藏就像

{pid0000013=[1238, 1], pid000003=[581, 1], pid0000034=[2929, 1], pid0000032=[1357, 1], pid0000051=[799, 1], pid0000050=[518, 1], pid0000019=[836, 1], pid0000018=[946, 1], pid0000039=[1992, 1], pid0000016=[3026, 2], pid0000037=[528, 1], pid0000014=[1966, 1], pid0000036=[1632, 1], pid0000046=[2472, 2], pid0000045=[733, 1], pid0000023=[2308, 1], pid0000044=[3205, 2], pid0000043=[2521, 2], pid0000021=[369, 1], pid0000042=[822, 1], pid0000041=[1515, 1], pid0000040=[491, 1], pid0000029=[2230, 1], pid0000028=[645, 1], pid0000049=[190, 1], pid0000027=[1897, 1], pid0000048=[1594, 1], pid0000026=[1536, 1], pid0000047=[3071, 2]}

对于每个productId,都有数量和数量的订单。代码是用java返回的。我的要求是,我想将订单的ProductID、数量和编号分成3个不同的列表,如

[pid0000013,pid000003,pid0000034,pid0000032,pid0000051 and so on]
[1238,581,2929,1357,799 and so on]
[1,1,1,1,1 and so on]

订单的数量和编号应该与它们相关的产品Id相匹配。我如何在java中实现这一点?

共有1个答案

林博厚
2023-03-14

您可以利用< code>map:

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, List<Integer>> productToOrderInfo = new HashMap<>();
        productToOrderInfo.put("pid0000013", List.of(1238, 1)); productToOrderInfo.put("pid000003", List.of(581, 1)); productToOrderInfo.put("pid0000034", List.of(2929, 1)); productToOrderInfo.put("pid0000032", List.of(1357, 1)); productToOrderInfo.put("pid0000051", List.of(799, 1)); productToOrderInfo.put("pid0000050", List.of(518, 1)); productToOrderInfo.put("pid0000019", List.of(836, 1)); productToOrderInfo.put("pid0000018", List.of(946, 1)); productToOrderInfo.put("pid0000039", List.of(1992, 1)); productToOrderInfo.put("pid0000016", List.of(3026, 2)); productToOrderInfo.put("pid0000037", List.of(528, 1)); productToOrderInfo.put("pid0000014", List.of(1966, 1)); productToOrderInfo.put("pid0000036", List.of(1632, 1)); productToOrderInfo.put("pid0000046", List.of(2472, 2)); productToOrderInfo.put("pid0000045", List.of(733, 1)); productToOrderInfo.put("pid0000023", List.of(2308, 1)); productToOrderInfo.put("pid0000044", List.of(3205, 2)); productToOrderInfo.put("pid0000043", List.of(2521, 2)); productToOrderInfo.put("pid0000021", List.of(369, 1)); productToOrderInfo.put("pid0000042", List.of(822, 1)); productToOrderInfo.put("pid0000041", List.of(1515, 1)); productToOrderInfo.put("pid0000040", List.of(491, 1)); productToOrderInfo.put("pid0000029", List.of(2230, 1)); productToOrderInfo.put("pid0000028", List.of(645, 1)); productToOrderInfo.put("pid0000049", List.of(190, 1)); productToOrderInfo.put("pid0000027", List.of(1897, 1)); productToOrderInfo.put("pid0000048", List.of(1594, 1)); productToOrderInfo.put("pid0000026", List.of(1536, 1)); productToOrderInfo.put("pid0000047", List.of(3071, 2));
        System.out.printf("productToOrderInfo = %s%n", productToOrderInfo);
        List<String> productIds = List.copyOf(productToOrderInfo.keySet());
        System.out.printf("productIds = %s%n", productIds);
        List<Integer> quantities = productToOrderInfo.values().stream().map(s -> s.get(0)).toList();
        System.out.printf("quantities = %s%n", quantities);
        List<Integer> numberOfOrders = productToOrderInfo.values().stream().map(s -> s.get(1)).toList();
        System.out.printf("numberOfOrders = %s%n", numberOfOrders);
    }
}

输出:

productToOrderInfo = {pid0000013=[1238, 1], pid000003=[581, 1], pid0000034=[2929, 1], pid0000032=[1357, 1], pid0000051=[799, 1], pid0000050=[518, 1], pid0000019=[836, 1], pid0000018=[946, 1], pid0000039=[1992, 1], pid0000016=[3026, 2], pid0000037=[528, 1], pid0000014=[1966, 1], pid0000036=[1632, 1], pid0000046=[2472, 2], pid0000045=[733, 1], pid0000023=[2308, 1], pid0000044=[3205, 2], pid0000043=[2521, 2], pid0000021=[369, 1], pid0000042=[822, 1], pid0000041=[1515, 1], pid0000040=[491, 1], pid0000029=[2230, 1], pid0000028=[645, 1], pid0000049=[190, 1], pid0000027=[1897, 1], pid0000048=[1594, 1], pid0000026=[1536, 1], pid0000047=[3071, 2]}
productIds = [pid0000013, pid000003, pid0000034, pid0000032, pid0000051, pid0000050, pid0000019, pid0000018, pid0000039, pid0000016, pid0000037, pid0000014, pid0000036, pid0000046, pid0000045, pid0000023, pid0000044, pid0000043, pid0000021, pid0000042, pid0000041, pid0000040, pid0000029, pid0000028, pid0000049, pid0000027, pid0000048, pid0000026, pid0000047]
quantities = [1238, 581, 2929, 1357, 799, 518, 836, 946, 1992, 3026, 528, 1966, 1632, 2472, 733, 2308, 3205, 2521, 369, 822, 1515, 491, 2230, 645, 190, 1897, 1594, 1536, 3071]
numberOfOrders = [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2]
 类似资料:
  • 我正在尝试使用Java流对对象的两个属性进行分组。正如一些答案所证明的那样,这很容易: 例如,上面的代码片段将以以下形式生成地图 其中,一个映射具有UPC代码的键,其值是具有通道标识符键的映射,这些键引用了产品列表。 这很酷,但是如果我不需要嵌套的值作为映射呢?也就是说,我想按ChannelIdentifier组织嵌套集合,但我只关心。映射的值(),而不是映射本身。有没有办法得到符合以下条件的结果

  • 假设我有一个多映射,如下所示: 第一个步骤是将字符串拆分为一个数组,因为最初它是一个逗号分隔的字符串。然后,我找到任何值中的最大元素数,循环该次数的条目中的所有值,并用结果为每个值创建一个映射。坦率地说,我上周五写了这段代码,但我已经不能正确地阅读它... 所以,一开始这是一件简单的事情,但我最终陷入了混乱,有没有更好的方法来做这件事? 提前谢了。

  • 操作步骤: ①在"图层管理"模块,选择图层,点击"更多"按钮。 ②点击"复制数据密钥"按钮。 ③弹出"复制数据密钥窗口",点击"复制"按钮。 ④进入想要合并的地图,点击地图右上工具条上的"数据密钥"按钮。 ⑤弹出"导入数据密钥窗口",粘贴刚才复制的密钥,点击"导入"按钮,数据在地图导入成功。 提示: ●复制图层数据参考复制拷贝图层 操作动图: [查看原图]

  • KEY1---->VAL1 KEY2---->VAL3 KEY3---->VAL3 KEY5---->VAL5 KEY6---->VAL3 KEY7---->VAL6 KEY8---->VAL3 KEY9---->VAL3

  • 我有一个列,其中包含该列的名称和值,格式如下: 我不想使用上面的设置,而是希望按以下格式排列列: 问题是这些值在整个列中并不一致,有时我会有这些值的组合,有时没有,有时只有一个,但顺序如何并不重要,所有这些列都必须创建。怎样才能用一种通用的方式调用它们,而不用像这样指定值:

  • 问题内容: 我正在尝试使用PIL将照片分成多张。 但它似乎不起作用。它会分割照片,但不会以精确的方式(您可以尝试)。 问题答案: