Карта Java возвращает null для текущего ключа

У меня очень необычная проблема.
По сути, я пытаюсь получить значение, связанное с ключом, из карты строк в строки.
Я знаю, что ключ, который я использую, присутствует; Я использую ту же самую строку, которую я использовал, чтобы вставить ее!

Я печатаю операторы по всему коду, и в этом случае у меня есть...
Вот мой словарьсловарь символов

{thusChar=∴, spaceChar=, plusChar=+, equalsIndent=#, multiplyChar=×, equalsChar==, newlineChar=\n, divideChar=÷, subjectChar=:, variableIndent=@}

Самый последний ключ "variableIndent" - это беда!
Вот код...

System.out.println  (   characterDictionary.get("variableIndent") );

который неправильно выводит:null

Я проверил, дважды проверил и трижды проверил свой код.
Нет абсолютно никакой разницы между клавишей"variableIndent"и строковый аргумент characterDictionary.get("variableIndent"), но он ведет себя так, как будто этот ключ отсутствует.

Я могу абсолютно гарантировать, что этот ключ присутствует и что две строки идентичны.
Все остальные элементы (те, что я проверил; около 3 до сих пор )из словаря извлекаются как обычно. Почему «variableIndent» с его значением «@» подыгрывает?

Вы могли заметить, что словарь содержит символы, отличные от ASCII, например "thusChar". Может ли это быть связано?

Спасибо
(Это кажется очень простой и тривиальной задачей, как будто я сделал какую-то досадно глупую ошибку, но никак не могу ее решить!)

РЕДАКТИРОВАТЬ:

Хорошо, это ДОЛЖНО быть что-то о кодировании.
Я взял строковый ключ из словаря и сравнил его с моим аргументом get.
При печати они идентичны, но java говорит, что они не равны.
Ключевая строка получена из текстового файла в кодировке UTF -8, а строка аргумента получена из литерала Java Eclipse.
Однако персонажи идентичны.
В чем проблема,и как я могу это решить?

Спасибо!

РЕДАКТИРОВАТЬ:

Хм, вот что на самом деле происходит за кулисами.
У меня есть текстовый файл UTF -8, который содержит следующее содержимое...

variableIndent,@
equalsIndent,#
spaceChar, 
newlineChar,\n
multiplyChar,×
divideChar,÷
plusChar,+
equalsChar,=
subjectChar,:
thusChar,∴

Я «загружаю» этот файл, читая каждую строку файла как элемент ArrayList<String>, передавая каталог файла:

private static ArrayList<String> readLinesFile(String ResourceFile)  {
    ArrayList<String> Lines = new ArrayList<String>();
        try{
            InputStream fstream = FileManager.class.getResourceAsStream(ResourceFile);
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            while ((strLine = br.readLine()) != null)  {
                Lines.add(strLine);  } 
            in.close();  }
        catch (Exception e)  {
            System.out.println("Error: " + e.getMessage());  } 
        return Lines;  }

До сих пор все в порядке.
Затем я передаю этот ArrayList в функцию, которая разбивает каждый элемент по символу "," (, используя функцию из личного пакета; Это определенно не проблема ), и добавляет первую часть в качестве ключа ко второй в новом словаре.

private static Map<String, String> generateBaseUnits_Characters_Prefixes(ArrayList<String> FileContent)  {
    Map<String, String> BaseUnitsCache = new HashMap<String, String>();
    ArrayList<String> currentLine;
    for (int i=0; i<FileContent.size(); i++)  {
        currentLine = MiscellaneousFunctions.splitString(FileContent.get(i), ",");
        BaseUnitsCache.put(currentLine.get(0), currentLine.get(1)); }
    return BaseUnitsCache;  }

и это создает словарь, который вызывает все проблемы.
У меня есть набор ключевых литералов, соответствующих именам символов в текстовых файлах, которые я использую для доступа к словарю в программе.

public static String variableIndentKey = "variableIndent";
public static String equalsIndentKey = "equalsIndent";
public static String spaceCharKey = "spaceChar";  
public static String newlineCharKey = "newlineChar";
public static String multiplyCharKey = "multiplyChar";
public static String divideCharKey = "divideChar";  
public static String plusCharKey = "plusChar";
public static String equalsCharKey = "equalsChar";  
public static String subjectCharKey = "subjectChar";
public static String thusCharKey = "thusChar";

ВОТ ПРОБЛЕМА:

Верхняя строка текстового файла «закручивается» в словаре. Он добавляется в словарь и правильно отображается среди набора ключей и печатного формата словаря, но попытка доступа к нему возвращает «ноль».
(В данном случае это переменнаяIndent. Если я помещу variableIndent в другое место в текстовом файле, equalsIndent облажается и т. д.)

Что происходит!?
У меня есть хитрая функция?!
Они хорошо работали для всего остального.

Спасибо!

5
задан Peter Lawrey 20 July 2013 в 13:39
поделиться