Java哈希映射问题
我想问一下 在Hashmap中 如果元素ID相同,如何计算所有数字 谁能给我一些建议吗 或者只是提供一些有用的参考链接供我学习 谢谢Java哈希映射问题,java,hashmap,Java,Hashmap,我想问一下 在Hashmap中 如果元素ID相同,如何计算所有数字 谁能给我一些建议吗 或者只是提供一些有用的参考链接供我学习 谢谢 import java.util.*; import java.util.Iterator; public class hash { public static void main(String[] args) { HashMap hashMap = new HashMap(); hashMap.put("ABS",
import java.util.*;
import java.util.Iterator;
public class hash {
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put("ABS", new Double(3434.34));
hashMap.put("ABD", new Double(123.22));
hashMap.put("ABD", new Double(123.22));
hashMap.put("ABD", new Double(123.22));
hashMap.put("ABD", new Double(123.22));
Set set = hashMap.entrySet();
Iterator i = set.iterator();
while (i.hasNext()) {
Map.Entry me = (Map.Entry) i.next();
System.out.println(me.getKey() + " : " + me.getValue());
}
}
}
你不能。您需要一个支持计数键的数据结构。地图实现不会 番石榴 你可以用的一件事是 示例代码: 输出: 键:ABD,计数:4,值:[123.22,123.22,123.22,123.22,123.22] 键:ABS,计数:1,值:[3434.34] apachecommons/Collections中的MultiMap也可以做到这一点 普通Java 如果不允许使用外部库,您仍然可以使用映射实现此功能。创建这样一个方法 辅助方法 用法 然后像这样使用它:
final Map<String, Collection<Double>> map =
new HashMap<String, Collection<Double>>();
assignValue(map, "ABS", Double.valueOf(3434.34));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
for(final Entry<String, Collection<Double>> entry : map.entrySet()){
System.out.println(new StringBuilder()
.append("Key: ")
.append(entry.getKey())
.append(", count: ")
.append(entry.getValue().size())
.append(", values: ")
.append(entry.getValue())
.toString());
}
输出
键:ABD,计数:4,值:[123.22,123.22,123.22,123.22,123.22]
键:ABS,计数:1,值:[3434.34]
你不能。您需要一个支持计数键的数据结构。地图实现不会 番石榴 你可以用的一件事是 示例代码: 输出: 键:ABD,计数:4,值:[123.22,123.22,123.22,123.22,123.22] 键:ABS,计数:1,值:[3434.34] apachecommons/Collections中的MultiMap也可以做到这一点 普通Java 如果不允许使用外部库,您仍然可以使用映射实现此功能。创建这样一个方法 辅助方法 用法 然后像这样使用它:
final Map<String, Collection<Double>> map =
new HashMap<String, Collection<Double>>();
assignValue(map, "ABS", Double.valueOf(3434.34));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
for(final Entry<String, Collection<Double>> entry : map.entrySet()){
System.out.println(new StringBuilder()
.append("Key: ")
.append(entry.getKey())
.append(", count: ")
.append(entry.getValue().size())
.append(", values: ")
.append(entry.getValue())
.toString());
}
输出
键:ABD,计数:4,值:[123.22,123.22,123.22,123.22,123.22]
键:ABS,计数:1,值:[3434.34]
HashMap是一个不能包含重复键的映射。如果允许重复键,那么在调用map.getduplicateKey?时您希望返回哪个值?HashMap是一个不能包含重复键的映射。如果允许重复键,调用map.getduplicateKey时您希望返回哪个值?因此您需要使用Double+Count作为值,然后使用它而不是Double,作为练习,让它扩展java.lang.Number:
Class DoubleCount{
final double value;
private int count;
DoubleCount(double value){
this.value = value;
}
public int getCount(){
return count;
}
public double getValue(){
return value;
}
public int incCount(){
return ++count;
}
}
因此,您需要使用Double+Count作为值,然后使用它而不是Double,作为练习,让它扩展java.lang.Number:
Class DoubleCount{
final double value;
private int count;
DoubleCount(double value){
this.value = value;
}
public int getCount(){
return count;
}
public double getValue(){
return value;
}
public int incCount(){
return ++count;
}
}
size=hashMap.size;
然后使用for循环迭代size=hashMap.size;
然后使用for循环进行迭代进行通读,尤其是“put”方法,该方法表示:
将指定的值与此映射中的指定键相关联。如果映射以前包含此键的映射,则替换旧值
您构建代码的方式意味着HashMap将只包含两个键/值对
public class hash {
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put("ABS", new Double(3434.34)); // "ABS" key created. 1 object in map.
hashMap.put("ABD", new Double(123.22)); // "ABD" key created. 2 objects in map.
hashMap.put("ABD", new Double(123.22)); // "ABD" reference will point to new value.
hashMap.put("ABD", new Double(123.22)); // .. and again
hashMap.put("ABD", new Double(123.22)); // .. and again
因此,虽然您已经编写了五行put,但是HashMap中只会放置两个对象
你可以用
hashMap.size()
返回“hashMap”中有多少个键/值对的int值。具有通读功能,尤其是“put”方法,该方法表示:
将指定的值与此映射中的指定键相关联。如果映射以前包含此键的映射,则替换旧值
您构建代码的方式意味着HashMap将只包含两个键/值对
public class hash {
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put("ABS", new Double(3434.34)); // "ABS" key created. 1 object in map.
hashMap.put("ABD", new Double(123.22)); // "ABD" key created. 2 objects in map.
hashMap.put("ABD", new Double(123.22)); // "ABD" reference will point to new value.
hashMap.put("ABD", new Double(123.22)); // .. and again
hashMap.put("ABD", new Double(123.22)); // .. and again
因此,虽然您已经编写了五行put,但是HashMap中只会放置两个对象
你可以用
hashMap.size()
要返回“hashMap”中有多少个键/值对的int值。这不正确,他正在重新分配同一个键,并想计算重新分配的次数。这不正确,他正在重新分配同一个键,并想计算可能重复的