我正在尝试创建一个哈希图:
{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);
}
}