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();