在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);
}
}