在java中为特定条件创建哈希映射

在java中为特定条件创建哈希映射,java,hashmap,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} 我需要创建一个hashmap,上面设置的第一个值作为键,同时将这些值添加到如下列表中: hashmap=[0={1,3,4,5},{1,4,5,6},{1,6,7,8}] [1={2,5,6,7},{2,4,5,6}] 等等 我穿过布景。如果第一个值与前一个不同,我

我正在尝试创建以下内容的哈希映射:

{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}

我需要创建一个hashmap,上面设置的第一个值作为键,同时将这些值添加到如下列表中: 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条件进行初始化

我如何解决这个问题

感谢和问候,
Smitha.

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

基本上l只存在于if条件中。其他人看不到。 尝试:

移动列表l=新数组列表;在if语句之外。你不需要地图吗?
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);
    }
}