Парсинг строки в Java в HashMap

135
30 июля 2019, 05:40

Как правильнее распарсить строку. Строка вот такого типа: key:value|key:value|key:value

В итоге планирую получить HashMap<String, Integer>. Пример: "Temperature:35"

Answer 1

1) split:

   String example = "Terminator:35|SuperMen:53|Robbin:12";
   String[] pairs = example.split("\\|");
   Map<String, Integer> map = new HashMap<>();
   for (String pair : pairs) {
      String[] keyValue = pair.split(":");
      map.put(keyValue[0], Integer.valueOf(keyValue[1]));
   }  

2) regex:

    Map<String, Integer> map = new HashMap<>();
    String example = "Terminator:35|SuperMen:53|Robbin:12";
    Pattern pattern = Pattern.compile("(\\w+):(\\d+)");
    Matcher matcher = pattern.matcher(example);
    while (matcher.find()) {
        map.put(matcher.group(1), Integer.valueOf(matcher.group(2)));
    }
    System.out.println(map);

3) в цикле, не сильно оптимально вышло, но

    Map<String, Integer> map = new HashMap<>();
    String example = "Terminator:35|SuperMen:53|Robbin:12";
    StringBuilder key = new StringBuilder();
    StringBuilder value = new StringBuilder();
    boolean keyFlag = true;
    boolean valueFlag = false;
    for (char ch : example.toCharArray()) {
        if (ch == ':') {
            valueFlag = true;
            keyFlag = false;
        } else if (ch == '|') {
            keyFlag = true;
            valueFlag = false;
            map.put(key.toString(), Integer.valueOf(value.toString()));
            value = new StringBuilder();
            key = new StringBuilder();
        } else {
            if (keyFlag) {
                key.append(ch);
            } else if (valueFlag) {
                value.append(ch);
            }
        }
    }
    map.put(key.toString(), Integer.valueOf(value.toString()));
    System.out.println(map);    
READ ALSO
IllegalStateException Failed to load ApplicationContext custom handling

IllegalStateException Failed to load ApplicationContext custom handling

Возможно ли перехватить IllegalStateException в собственном обработчике исключений?Смысл в том, чтобы если в командной строке отсутствует имя файла,...

107
JavaFX круглый ProgressBar

JavaFX круглый ProgressBar

Суть вопроса такова, нужно сделать круглый прогресс барПробовал создать на основе ProgressIndicator, не выходит ничего нормального

131
как убрать отступ над шрифтом в input

как убрать отступ над шрифтом в input

Текст в input (засчет отступа над ним) расположен не по центруКак убрать отступы у шрифтов?

129
СSS и HTML. Как реализовать линии?

СSS и HTML. Как реализовать линии?

Как проще всего с помощью CSS и HTML реализовать линии, обведенные желтым?

156