map.containsKey возвращает false [дубликат]

192
07 августа 2018, 05:20

На данный вопрос уже ответили:

  • Код считывает, но не работает со строчкой 1 ответ

Написал код для примера из моего приложения. Суть такова. Есть текстовый документ с айпишниками и именами. Приложение считывает его и заносит в HashMap. Проблема: Айпишник который находиться в первой строке при помощи метода containsKey не находит. Перебираю все ключи мар - он реально есть. Именно первая строка. Тотже текст ставлю во вторую строку - все гуд.

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;

public class MapTesting {
    HashMap<String, String> mapallowedClients;
    private void readAllowedClients(){
        mapallowedClients = new HashMap<>();
        try {
            InputStream in = getClass().getResourceAsStream("/allowedClients.txt");
            BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF8"));
            while(reader.ready()){
                String[] client = reader.readLine().split(":");
                if(client.length>1){
                    mapallowedClients.put(client[0],client[1]);
                }
            }
            in.close();
            reader.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        MapTesting mp = new MapTesting();
        mp.readAllowedClients();
        System.out.println(mp.mapallowedClients.containsKey("10.244.1.121"));
    }
}

Вот список из текстового документа с айпишниками:

10.244.1.121:sadas
10.244.1.120:sadas2
10.244.1.10:Опер
10.244.1.22:Гонтар
10.244.1.23:КПП2
10.244.1.31:КПП1
10.244.1.34:Дроздовський
10.244.1.69:Сагін
10.244.1.120:Опер120
10.244.1.169:Дідик
10.244.1.189:Гідзула
10.244.1.232:П-010
10.244.1.16:СПС
127.0.0.1:Авдонін
192.168.0.102:Clebo
192.168.0.100:Home
Answer 1

Как я пришел к решению проблемы.... Сначала информацию из первой строки сохранил в стринг переменную. Потом сравнил эту переменную с "10.244.1.121". Опять false. Потом разбил полученную переменную в сhar массив. И как оказалось в первой строке при вызове метода char[].lenght на один елемент больше чем в "10.244.1.121. Но он пустой и никак не отображается. Потом зашел сюда и прочитал комментарий про дубликат вопроса. Как оказалось дейтвительно с самого начала файла с UTF кодировкой записывается BOM!!!! УХ...... и потрепал он мои нервы. Hivemaster, Спасибо за коммент! В итоге написал вот так:

String[] client = reader.readLine().replace("\uFEFF", "").split(":");
READ ALSO
Помогите сделать парсер txt ответа из itunes store

Помогите сделать парсер txt ответа из itunes store

Есть апи для запросов: https://wwwapple

168
Как удалить конкретный Point в библиотеке yandex map kit 3.0?

Как удалить конкретный Point в библиотеке yandex map kit 3.0?

Всем добрый день, добавляю метку (point) на карту, после нажатия на кнопку определения местоположения эта метка должна удалиться и добавиться...

206
В каком слое должен происходить парсинг Json в Java модель?

В каком слое должен происходить парсинг Json в Java модель?

Использую(на сколько себе ее представляю) Mvp и чистую архЗагвоздка в следующем, в data слое есть репозиторий который получает http_clenta(retrofit) и идёт...

192
Log4j не создает файл

Log4j не создает файл

Есть Spring boot приложениеХочу добавить туда логирование log4j

167