Java Hashmap中某个键的值设置为另一个键的值
我在创建的hashmap中遇到了不同键的值问题。不知何故,这些值正被最新的附加值覆盖 例如:Java Hashmap中某个键的值设置为另一个键的值,java,hashmap,maps,Java,Hashmap,Maps,我在创建的hashmap中遇到了不同键的值问题。不知何故,这些值正被最新的附加值覆盖 例如: map.put("String1", "123") map.put("String2", "456") System.out.println(map.get("String1")); //would print 456 我的hashmap是: Map<String, Testing> systems = new HashMap<>(); 问题是(f是一个文件): 第一次打印为
map.put("String1", "123")
map.put("String2", "456")
System.out.println(map.get("String1")); //would print 456
我的hashmap是:
Map<String, Testing> systems = new HashMap<>();
问题是(f是一个文件):
第一次打印为键“input.flab9atdn.gz”和键“input.apl9lt.gz”提供了不同的值
最后一个print语句为key“input.flab9atdn.gz”提供了相同的值,但为key“input.apl9lt.gz”提供了key“input.flab9atdn.gz”的值。键“input.flab9atdn.gz”被添加到hashmap中的键“input.apl9lt.gz”之后,因此在键“input.flab9atdn.gz”之后添加的任何内容也会将新键的值赋予“input.flab9atdn.gz”
有什么线索可以解释为什么会这样吗?有什么可能的解决办法吗?我试着用列表做类似的事情,但遇到了同样的问题。我也试着不使用测试
多谢各位
编辑(用于输入):
input.apl9lt.gz
0.160837098024862
0.03075251487336594
0.22437008086531643
0.1971910732696186
0.26775040012743095
9.256258391747239E-4
0.1348288884102969
0.04098977989693765
0.22076261792825694
0.14351330413359978
0.4326923076923077
0.07127127472804279
4.552325182365065E-5
0.010058991520632703
0.013241228159087674
0.010137295467368818
0.16308220490382738
0.013974532767649097
0.1591821903406855
0.03546054590978735
0.017811035142771457
0.09931683119953653
0.0012300123001230013
3.210066739388034E-5
0.13463869607114665
0.056660951442691745
0.009024064171122994
0.00111158621285874
0.19147531389263409
6.05841565054187E-4
0.15122464967762936
0.017945455244915694
0.24100308685261787
6.295914132164171E-4
0.41666666666666663
0.16054778554778554
0.12606805722666745
0.03122700118062138
0.05840908368719257
0.06151876506910154
8.167932696234583E-5
0.48663786619303134
0.0017420658249683476
0.20520161886380303
7.111269849728675E-5
0.1157176972265951
0.28587824256374156
0.032836748137528377
0.04182754182754183
0.02944176265259386
input.flab9atdn.gz
0.4550531747779656
0.11354712610736152
0.4465970245283123
0.39990864084973815
0.23410193071725469
8.08015513897867E-5
0.11287817139653589
0.02255268670973833
0.30038335608865446
0.21267974099603318
0.6041666666666666
0.15726821262566176
0.15690222729126874
1.5053439710973956E-4
0.0843584401155248
0.5027027027027027
0.1873237718924946
0.005660813678763912
0.012321170992537366
0.0529994153272247
0.04489848129896188
0.016508461433080466
0
1.0736065674698053E-4
0.07164253590778259
0.14083889573189318
0.024676040805073064
0.16099898114516484
0.16509562037628656
0.06488409960391041
0.22263263699157246
0.0568843663526689
0.4175364417422477
0.1106842493991619
0.15555555555555556
0.5416666666666666
0.4654817731306396
0.0930344930767678
0.344114561968089
0.1882981402539536
0.11698973634619976
0.4533746137676584
0.3389765988389732
0.475199277730597
0.08708693608991427
0.34790332410690694
0.035929746042875826
0.08056424630498706
0.20352743561030237
0.12758565977230674
将这些数据读入双数组(大小为50)。要使用测试类,只需删除dcg和ndcg即可。首先:
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("String1", "123");
map.put("String2", "456");
System.out.println(map.get("String1")); //would print 456
}
}
这实际上是印刷品
klmnopqrst
您需要创建新数组,并将其设置为添加到映射的测试实例:
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) throws Exception {
HashMap<String, char[]> map = new HashMap<>();
char[] buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('a' + i);
}
map.put("String1", buffer);
buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('k' + i);
}
map.put("String2", buffer);
System.out.println(map.get("String1")); //would print klmnopqrst
}
}
import java.util.HashMap;
公共类MapPutExample{
公共最终静态void main(字符串[]args)引发异常{
HashMap=newHashMap();
char[]buffer=新字符[10];
for(int i=0;i
这是印刷
abcdefghij
首先:
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("String1", "123");
map.put("String2", "456");
System.out.println(map.get("String1")); //would print 456
}
}
这实际上是印刷品
klmnopqrst
您需要创建新数组,并将其设置为添加到映射的测试实例:
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) throws Exception {
HashMap<String, char[]> map = new HashMap<>();
char[] buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('a' + i);
}
map.put("String1", buffer);
buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('k' + i);
}
map.put("String2", buffer);
System.out.println(map.get("String1")); //would print klmnopqrst
}
}
import java.util.HashMap;
公共类MapPutExample{
公共最终静态void main(字符串[]args)引发异常{
HashMap=newHashMap();
char[]buffer=新字符[10];
for(int i=0;i
这是印刷
abcdefghij
请提供一份报告。您的代码只有1个put
调用,因此您没有显示代码来重现映射中有两个条目的问题。@andreas Updated您仍然没有提供完整的、可验证的示例。请创建显示问题的小型可运行测试程序。更有可能的是,当您编写精简的代码来重现问题是一个独立的程序时,您会自己发现错误。如果没有,我们可以运行并调试代码以帮助您找到它。请提供一个。您的代码只有1个put
调用,因此您没有显示代码来重现映射中有两个条目的问题。@andreas Updated您仍然没有提供完整的、可验证的示例。请创建显示问题的小型可运行测试程序。更有可能的是,当您编写精简的代码来重现问题是一个独立的程序时,您会自己发现错误。如果没有,我们可以运行和调试代码来帮助您找到它。第一部分是一个可视化的示例,我没有说过这是我的问题。我会看看你提到的阵列。可能就是这样。谢谢。第一部分是一个直观的例子,我没有说这是我的问题。我会看看你提到的关于
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("String1", "123");
map.put("String2", "456");
System.out.println(map.get("String1")); //would print 456
}
}
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) throws Exception {
HashMap<String, char[]> map = new HashMap<>();
char[] buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('a' + i);
}
map.put("String1", buffer);
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('k' + i);
}
map.put("String2", buffer);
System.out.println(map.get("String1")); //would print klmnopqrst
}
}
import java.util.HashMap;
public class MapPutExample {
public final static void main(String[] args) throws Exception {
HashMap<String, char[]> map = new HashMap<>();
char[] buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('a' + i);
}
map.put("String1", buffer);
buffer = new char[10];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (char) ('k' + i);
}
map.put("String2", buffer);
System.out.println(map.get("String1")); //would print klmnopqrst
}
}