我正在使用这样的二进制字符串:
010010010000110100001010
作为String,将其转换为Integer Array,如下所示:
int[] DD = new DD[binString.length()];
char temp = binString.charAt(i);
int binData = Character.getNumericValue(temp);
DD[i] = binData;
我想把这些Integer值保存到HashMap中(我必须按照给我的指示存储到HashMap中),如下所示:
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中只存储了一个条目,比如{&#34; ON&#34;,0}。并且没有存储其他值。我的预期输出是:
{&#34; ON&#34; ,1,&#34; OFF&#34; ,0,&#34; ON&#34; ,1 .........}
有没有更好的方法来存储值以获得我的预期输出?任何帮助将不胜感激。
P.S:请忽略重复的代码,而且我对编程相对较新。
答案 0 :(得分:0)
您对Map
的使用存在缺陷。地图采用唯一键并返回值。
您正在尝试使用重复键。相反,请查看使用包含类的List
:
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();
要添加到列表,请创建班级的新实例并致电List#add
:
list.add(new ClassName("ON", 1));
答案 1 :(得分:0)
正如Infuzed Guy所说,你正在以错误的方式使用Map
。它是价值映射的独特关键&#34;。
只要您使用相同的密钥多次并希望存储所有dada,就需要使用List
。
以下是我能提出的一点:test it here
import java.util.LinkedList;
import java.util.List;
class Main {
public static void main(String[] args) {
class Tuple<X, Y> { //The wrapper object
public final X x;
public final Y y;
public Tuple(X x, Y y) { //Object constructor
this.x = x;
this.y = y;
}
public String toString() //Here for printing purpose
{
return "\"" + this.x + "\", " + this.y;
}
}
//Note here te use of List
List<Tuple> toMemory = new LinkedList<>();
String binString = "10100100101100101011";
int[] DD = new int[binString.length()];
for(int i=0; i < binString.length(); ++i)
{
//Here I use the char value
//to get the by subtraction
DD[i] = binString.charAt(i) - '0';
if(DD[i] == 1) //Simple check with the int value
{
toMemory.add(new Tuple<>("ON", DD[i]));
}
else
{
toMemory.add(new Tuple<>("OFF", DD[i]));
}
}
//Print the List
System.out.print("{ ");
for(Tuple s: toMemory) {
System.out.print(s +", ");
}
System.out.println("}");
}
}