首页 > 解决方案 > 在java中为特定条件创建哈希图

问题描述

我正在尝试创建一个哈希图:

{Integer, List<Integer>}.

例如,我有以下集合: Numbers { 0,1,3,4,5 0,1,4,5,6 0,1,6,7,8 1,2,5,6,7 1,2 ,4,5,6 }

我需要创建一个哈希图,上面设置的第一个值作为键,同时将值添加到列表中,如下所示: hashmap = [0 = {1,3,4,5}, {1,4,5,6}, {1,6,7,8}] [1 = {2,5,6,7}, {2,4,5,6}]

等等。

我遍历集合。如果第一个值与前一个不同,我需要创建一个新列表并开始存储。否则我需要将值添加到先前创建的列表中。

我无法创建新列表。如果我做这样的事情:

    int prev = 0;
    for(Number n : Numbers)
    {
        int current = n;
        if(prev_first != current)
        {
            List<Integer> l = new Arraylist<>();
            hashmap.out(current, l);
            l.add(n);
        }
        else
        {
            l.add(n);
        }
    }

问题是编译器看不到列表 'l' 并说它可能没有针对 else 条件进行初始化。

我该如何解决这个问题?

谢谢和问候,史密斯。

标签: javahashmap

解决方案


您正在if声明中创建列表。因此,您无法从else语句中访问列表。只需在语句之前创建列表,if编译器就会停止抱怨。


推荐阅读