Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hashmap中某个键的值设置为另一个键的值_Java_Hashmap_Maps - Fatal编程技术网

Java 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是一个文件): 第一次打印为

我在创建的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是一个文件):

第一次打印为键“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
    }
}