HashMapJava,保存ADSB消息

HashMapJava,保存ADSB消息,java,class,caching,hashmap,sendmessage,Java,Class,Caching,Hashmap,Sendmessage,我是java新手,正在做实验练习。这个实验室是关于ADSB消息的,我实时收到这些消息。为了计算飞机的纬度、经度和高度,我必须解码ADSB信息。我的问题是,我不知道如何保存一条特殊的消息,并在第二步中使用保存的消息来计算我的区域索引。 我试图用HashMap类来实现这一点,但它并没有真正保存我收到的第一条消息 HashMap <String, Object> msgCache = new HashMap <String, Object>(); Message Ads

我是java新手,正在做实验练习。这个实验室是关于ADSB消息的,我实时收到这些消息。为了计算飞机的纬度、经度和高度,我必须解码ADSB信息。我的问题是,我不知道如何保存一条特殊的消息,并在第二步中使用保存的消息来计算我的区域索引。 我试图用HashMap类来实现这一点,但它并没有真正保存我收到的第一条消息

HashMap <String, Object> msgCache = new HashMap <String, Object>();
    Message AdsMsg;
    Message newMsg = new Message ();
    Message oldMsg = new Message ();

    AdsMsg = newMsg;
    AdsMsg = oldMsg;

    if (msgCache.containsKey(ICAO)){
        oldMsg = (Message) msgCache.get(ICAO);

        if (CPRFormat == 1){
            System.out.println("Erhaltene Message ist even ");
        }else{
            System.out.println("Erhaltene Message ist odd ");
        }
    }else{
        System.out.println("ICAO wird gespeichert: " + ICAO);
        msgCache.put(ICAO, newMsg);
    }
HashMap msgCache=newhashmap();
消息AdsMsg;
Message newMsg=新消息();
Message oldMsg=新消息();
AdsMsg=newMsg;
AdsMsg=oldMsg;
if(msgCache.containsKey(国际民航组织)){
oldMsg=(消息)msgCache.get(ICAO);
if(CPRFormat==1){
System.out.println(“Erhaltene消息为偶数”);
}否则{
System.out.println(“Erhaltene消息为奇数”);
}
}否则{
System.out.println(“ICAO wird gespeichert:+ICAO”);
msgCache.put(国际民航组织,newMsg);
}

我不知道您为什么在这里使用HashMap。您每次都在创建一个新的HashMap,并在其中放置一些值。但是,您可以直接使用这些值来计算结果(假设j是您想要的结果)。我每秒都会收到这些消息(这是一个while循环),我必须保存第一条消息,用第二条消息计算。我删除了put、get、containsKey和eq方法。其实并不需要它们,因为HashMap已经有了它们。我还编辑了我的if子句:问题仍然是一样的。它不会使用HashMap中的put方法保存收到的消息。问题很可能是因为您使用了错误的键来检索消息。使用调试器或add print语句来了解在使用put、get和containsKey时ICAO的值是否相同。或者,如果键相同,则每次的HashMap都不同。我记得在您的原始代码中,您为每个请求创建了一个新的HashMap,而不是使用前一个请求填充的HashMap。