Java HashMap只存储一个条目
我取一个二进制字符串,如下所示:Java HashMap只存储一个条目,java,hashmap,Java,Hashmap,我取一个二进制字符串,如下所示: int[] DD = new DD[binString.length()]; char temp = binString.charAt(i); int binData = Character.getNumericValue(temp); DD[i] = binData; Map<String, Integer> toMemory = new HashMap<String, Integer>(
int[] DD = new DD[binString.length()];
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
Map<String, Integer> toMemory = new HashMap<String, Integer>();
for(int i=0;i<binString.length();i++) {
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
if((DD[i] & (DD[i]-1) ) == 0) {
toMemory.put(new String("ON"), new Integer(DD[i]));
} else {
toMemory.put(new String("ON"), new Integer(DD[i]));
}
}
for(String s: toMemory.keySet()) {
if(s.startsWith("ON")) {
System.out.println(toMemory.get(s));
}
}
0100100001010000100
作为字符串,将其转换为整数数组,如下所示:
int[] DD = new DD[binString.length()];
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
Map<String, Integer> toMemory = new HashMap<String, Integer>();
for(int i=0;i<binString.length();i++) {
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
if((DD[i] & (DD[i]-1) ) == 0) {
toMemory.put(new String("ON"), new Integer(DD[i]));
} else {
toMemory.put(new String("ON"), new Integer(DD[i]));
}
}
for(String s: toMemory.keySet()) {
if(s.startsWith("ON")) {
System.out.println(toMemory.get(s));
}
}
我要将这些整数值保存到HashMap中,我必须按照如下说明将它们存储到HashMap中:
int[] DD = new DD[binString.length()];
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
Map<String, Integer> toMemory = new HashMap<String, Integer>();
for(int i=0;i<binString.length();i++) {
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
if((DD[i] & (DD[i]-1) ) == 0) {
toMemory.put(new String("ON"), new Integer(DD[i]));
} else {
toMemory.put(new String("ON"), new Integer(DD[i]));
}
}
for(String s: toMemory.keySet()) {
if(s.startsWith("ON")) {
System.out.println(toMemory.get(s));
}
}
我在这里面临的问题是,HashMap中只存储了一个条目,比如{ON,0}。并且没有存储其他值。我的预期输出是:
{开,1,关,0,开,1……}
有没有更好的方法来存储值以获得预期的输出?任何帮助都将不胜感激
注:请忽略重复出现的代码,我对编程比较陌生。您对a的使用是有缺陷的。映射采用唯一键并返回值。
您正在尝试使用重复的密钥。相反,请看如何使用包装器类:
class ClassName {
public String status;
public int value;
public ClassName(String status, int value){
this.status = status;
this.value = value;
}
}
List<ClassName> list = new ArrayList();
就像一个被弄糊涂的家伙说的,你用错了地图。它是唯一的键到值映射。 只要您多次使用同一个键并希望存储所有数据,就需要使用列表 以下是你给我们的小礼物:
注意:您几乎不需要调用新字符串some string,因为某些字符串已经是字符串了,只需直接使用文本即可。类似地,您很少需要调用新的Integer123,因为1这不使用可用的缓存实例,而是使用Integer.value123;2自动装箱将为您解决此问题:只需使用123。您的条件if DD[i]etc是冗余的:true和false分支是相同的。欢迎使用堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果您以后仍然有问题,请随时返回并提出更具体的问题。int[]DD=new DD[binString.length];绝对不会编译。HashMap中不能有重复的键。你一定误解了要求。