我正在尝试创建以下项的哈希图:
{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条件初始化。
我该如何解决?
感谢和问候, 史密莎。
答案 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);
}
}