在Java中为特定条件创建哈希图

时间:2018-09-15 21:04:08

标签: java hashmap

我正在尝试创建以下项的哈希图:

{Integer, List<Integer>}.

例如,我有以下设置: 数字{ 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}

我需要使用上面设置的第一个值作为键来创建一个哈希图,同时将这些值添加到列表中,如下所示: 哈希图= [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条件初始化。

我该如何解决?

感谢和问候, 史密莎。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

基本上l仅存在于if条件中。 else看不到。 试试:

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