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



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

{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 条件初始化。

我该如何解决这个问题?

感谢和问候, 史密斯。

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

基本上l只存在于if-Condition中。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);
}
}

最新更新