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中不能有重复的键。你一定误解了要求。