Java 为什么我的字符串[]数组组合没有作为键添加到HashMap中?
我正在尝试制作一个由某个字母表的各种组合组成的Java 为什么我的字符串[]数组组合没有作为键添加到HashMap中?,java,hashmap,key,combinations,Java,Hashmap,Key,Combinations,我正在尝试制作一个由某个字母表的各种组合组成的HashMap。hashmap:新建hashmap() String[]数组是键,但它似乎没有保存。这可能是我检查的方式? 由于所有值均为0,因此我使用以下方法进行了检查: int count = Collections.frequency(consData.values(), 0); for(String s: al){ nc = s + "|"; for(String k:al){
HashMap
。hashmap:新建hashmap()
String[]
数组是键,但它似乎没有保存。这可能是我检查的方式?
由于所有值均为0,因此我使用以下方法进行了检查:
int count = Collections.frequency(consData.values(), 0);
for(String s: al){
nc = s + "|";
for(String k:al){
nc= nc + k + "|";
for(String l : al){
nc = nc + l + "|";
for(String m : al){
nc = nc + m + "|";
for(String n : al){
nc = nc + n + "|";
for(String o : al){
nc = nc + o;
consData.put(nc, 0);
//nc= ""; If I don't add this, OutofMemory Error
}
}
}
}
}
}
似乎您正在尝试使用所有键预先填充HashMap。我不知道目标用例。但通常情况下,按需在HashMap中填充键是有意义的。这是一种很好的做法,而且效率更高 无论如何,解决你眼前的问题。您面临的问题是,在这里,您要将相同的键对象(或者在本例中是数组对象)一次又一次地添加到映射中,并同时从外部更新数组 因此,取代:
consData.put(nc, 0);
与:
应该能解决你的问题
这也意味着您需要将地图更改为地图。如果每个值都是字母,那么它们应该是
char
值,而不是String
,并且它们应该组合起来形成一个6个字母的字符串
,这对于键来说是比数组更好的选择。数组不能作为键使用,因为它们不能实现equals()
和hashCode()
,所以每个数组实例都是一个新的键。@Andreas我应该更改consData.put(nc,0)?不管对字符串做了什么更改,我仍然无法将其保存到HashMap中。请学习。您尚未提供nc
、consData
或al
的定义。al
中有多少个值,它们都是一个字母吗?--不管怎样,你认为这个新代码的关键是什么?注释掉put()。或者,老天禁止,试着调试你的代码。
consData.put(String.join("", nc), 0);