2016-05-18 5 views
1

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

Map<String, String> sections = new HashMap<>(); 
Map<String, String> 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? Как я могу получить номер , согласно авторов?

ответ

2

Поскольку у АВТОРА есть отношение 1 ко многим, вы должны сопоставить его с структурой List вместо String.

Например:

Map<String, ArrayList<String>> sections = new HashMap<>(); 
Map<String, String> 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<String> authors = null; 
     if(sections.containsKey(k)) 
     { 
      authors = sections.get(k); 
     } 
     else 
     { 
      authors = new ArrayList<String>(); 
      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; 
} 
+0

Спасибо за ответ, теперь рассчитывать работает, но я не могу 'setText' для' 'jTextField1' jTextField1.setText (sections.get ("АВТОР")) ; '? – hub

+0

Если вы хотите преобразовать список в строку, просто перейдите по списку и соедините строку по своему усмотрению. Я покажу пример в своем посте. –

+0

Ты гениальный !!! Я принимаю ваш ответ и +1. – hub

 Смежные вопросы

  • Нет связанных вопросов^_^