Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用HashMap<;整数,集合<;整数>&燃气轮机;对数字进行分类,但集合忽略了第一个值_Java - Fatal编程技术网

Java 使用HashMap<;整数,集合<;整数>&燃气轮机;对数字进行分类,但集合忽略了第一个值

Java 使用HashMap<;整数,集合<;整数>&燃气轮机;对数字进行分类,但集合忽略了第一个值,java,Java,给定一个整数数组 integers[] = {1, 2, 1, 7, 2}; 我计划使用以下代码返回一个映射,其中数组元素作为键,该元素的索引作为值 e、 在这种情况下,我们将返回: 1 -> (0,2) 2 -> (1,4) 7 -> (3) 但它并不完全有效——添加到集合中的初始值不会出现。代码如下: Map<Integer, Set<Integer>> hm = new HashMap<>(); for ( int k=0; k&l

给定一个整数数组

integers[] = {1, 2, 1, 7, 2};
我计划使用以下代码返回一个映射,其中数组元素作为键,该元素的索引作为值

e、 在这种情况下,我们将返回:

1 -> (0,2)
2 -> (1,4)
7 -> (3)
但它并不完全有效——添加到集合中的初始值不会出现。代码如下:

Map<Integer, Set<Integer>> hm = new HashMap<>();
for ( int k=0; k<integers.length; k++) { 
    Integer key=integers[k]; 
    if (hm.containsKey(key))
        hm.get(key).add(k);
    else
        hm.put(key, new HashSet<Integer>(k));
}
Map hm=newhashmap();

对于(int k=0;k您的代码将无法工作,因为此代码:

hm.put(key, new HashSet(k));
不接受初始元素,它接受初始大小

改为这样做:

Map<Integer, Set<Integer>> hm = new HashMap<>();
for (int k=0; k<integers.length; k++){ 
    Integer key=integers[k]; 
    if (!hm.containsKey(key))
        hm.put(key, new HashSet<>());
    hm.get(key).add(k);
}
Map hm=newhashmap();

对于@Bohemian所说的(intk=0;k),您没有正确使用HashSet的构造函数

关于您发布的问题,另一种解决方案是使用Guava的类:

int integers[]={1,2,1,7,2};
Multimap hm=HashMultimap.create();
对于(int k=0;k
对于前面提到的问题,代码看起来还不错。您面临什么问题?运行此代码会得到什么结果?
int integers[] = {1, 2, 1, 7, 2};
Multimap hm = HashMultimap.create();
for (int k = 0; k < integers.length; k++) { 
    Integer key = integers[k]; 
    hm.put(key, k);
}
Map<Integer, Collection<Integer>> result = hm.asMap();