Различные ошибки в LinkedHashMap - java8.1 - PullRequest
0 голосов
/ 26 июня 2018

Если я получаю доступ к ключам LinkedHashMap<Vector, Vector<Integer>> внутри его класса, он извлекается правильно, но если я создаю экземпляр его класса и вызываю метод класса, который отображает LinkedHashMap, я нахожу некоторые поля в ключах, которыеесли экземпляры Vector отсутствуют.

import java.util.Vector;
import java.util.LinkedHashMap;
public class TestLinkedHashMap 
{
    public static void main(String[] args) 
    {
        Test t = new Test();
        t.setSample();      
        System.out.println("The sample printed in main function is : \n" + t.getSample());
        return;
    }
}

class Test
{
    LinkedHashMap<Vector, Vector<Integer>> sample;

    public Test()
    {
        sample = 
            new LinkedHashMap<Vector, Vector<Integer>>();
    }

    public LinkedHashMap<Vector, Vector<Integer>> getSample()
    {
        return sample;
    }

    public void setSample()
    {
        Vector record1 = new Vector();
        record1.add(new String("Apple"));
        record1.add(new String("Orange"));
        record1.add(new String("Grapes"));
        record1.add(new String("Lime"));
        Vector<Integer> v1 = new Vector<Integer>();
        v1.add(new Integer(0));
        v1.add(new Integer(8));
        v1.add(new Integer(28));
        System.out.println("sample = " + sample);
        sample.put(new Vector(record1), v1);
        Vector record2 = new Vector();
        record2.add(new String("Pineapple"));
        record2.add(new String("Pear"));
        record2.add(new String("Mango"));
        Vector<Integer> v2 = new Vector<Integer>();
        v2.add(new Integer(0));
        v2.add(new Integer(18));
        sample.put(new Vector(record2), v2);
        System.out.println("The sample printed inside the class is : \n" + sample);
    }

Приведенный выше код работает нормально, но в приложении, которое я разрабатываю, я получаю различные выходные данные для образца.Я включил вывод моей заявки ниже.Мое приложение использует LinkedHashMap аналогично тому, как описано выше.

Вывод отличается в реальном приложении

1 Ответ

0 голосов
/ 26 июня 2018

Конечно this.sample - это null.Вы никогда не устанавливаете это значение.В конструкторе вы создаете новый LinkedHashMap<Vector, Vector<Integer>>, но фактически не присваиваете его переменной-члену класса sample, вместо этого вы просто создаете локальную переменную (локальную для конструктора) с именем sample.

Удалите LinkedHashMap<Vector, Vector<Integer>> перед sample в конструкторе, и это инициализирует переменную члена класса sample, как и ожидалось.

...