我正在尝试创建一个hashmap:
{Integer, List<Integer>}.
例如,我有以下集合:数字{0,1,3,4,50,1,4,5,60,1,6,7,8 1,2,5,6,7,1,2,4,5,6 }
我需要创建一个hashmap,将上面集合中的第一个值作为key,然后将这些值添加到列表中,如下所示: hashmap =0= {1,3,4,5},{1,4,5,6},{1,6,7,8}
诸若此类。
我遍历集合。如果第一个值与前面的值不同,我需要创建一个新的列表并开始存储。否则,我需要将值添加到先前创建的列表中。
我在创建新列表时遇到问题。如果我这样做:
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条件进行初始化。
我该如何解决这个问题?
谢谢和问候,史密斯。
发布于 2018-09-16 05:11:03
您将在if
语句中创建该列表。因此,您不能从else
语句访问该列表。只需在if
语句之前创建列表,编译器就会停止报错。
发布于 2018-09-16 05:11:50
基本上,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);
}
}
https://stackoverflow.com/questions/52348852
复制相似问题