Intereting Posts
Методы сопоставления точек с аннотированными параметрами Почему @OneToMany не работает с наследованием в Hibernate Java: IndentingXMLStreamWriter альтернатива? work sun.misc.BASE64Encoder / Decoder для получения байта Почему это изображение выглядит так плохо после сокращения на Java? POI / Excel: применение формул «относительным» способом Сериализация Java, UID не изменен. Могу ли я добавить в class новые переменные и метод? создание прокси-сервера Java, принимающего HTTPS Maven & Java: параметры mainClass для цели org.codehaus.mojo: exec-maven-plugin: 1.2.1: java отсутствуют или недействительны Получение даты в формате HTTP в Java Добавление пользовательских атрибутов в тег сообщения в пакете XMPP с использованием asmack для android? Как очистить запись из String Literal Pool Почему этот class не является streamобезопасным? Можно ли изменить неизменяемую переменную, чтобы другой stream мог «видеть» обновление? Использование конечных локальных переменных в java

получить количество счетчиков HashMap

Используя код из этой ссылки, загружайте содержимое текстового файла в графический интерфейс:

Map sections = new HashMap(); Map sections2 = new HashMap(); String s = "", lastKey=""; try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) { while ((s = br.readLine()) != null) { String k = s.substring(0, 10).trim(); String v = s.substring(10, s.length() - 50).trim(); if (k.equals("")) k = lastKey; if(sections.containsKey(k)) v = sections.get(k) + v; sections.put(k,v); lastKey = k; } } catch (IOException e) { } System.out.println(sections.get("AUTHOR")); System.out.println(sections2.get("TITLE")); 

В случае, если содержимое input.txt:

 AUTHOR authors name authors name authors name authors name TITLE Sound, mobility and landscapes of exhibition: radio-guided tours at the Science Museum 

Теперь я хочу подсчитать значения в HashMap, но sections.size() подсчитывает всю строку данных, хранящуюся в текстовом файле.

Я хотел бы спросить, как я могу подсчитать элементы, т. Е. Значения v в sections ? Как я могу получить номер 4 , по словам авторов ?

Поскольку AUTHOR имеет отношение от 1 до многих, вы должны сопоставить его со структурой List а не с String .

Например:

 Map> sections = new HashMap<>(); Map sections2 = new HashMap<>(); String s = "", lastKey=""; try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) { while ((s = br.readLine()) != null) { String k = s.substring(0, 10).trim(); String v = s.substring(10, s.length() - 50).trim(); if (k.equals("")) k = lastKey; ArrayList authors = null; if(sections.containsKey(k)) { authors = sections.get(k); } else { authors = new ArrayList(); sections.put(k, authors); } authors.add(v); lastKey = k; } } catch (IOException e) { } // to get the number of authors int numOfAuthors = sections.get("AUTHOR").size(); // convert the list to a string to load it in a GUI String authors = ""; for (String a : sections.get("AUTHOR")) { authors += a; }