Как прочитать файл в hashmap со списком в качестве значения? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть задание для моего класса структур данных, где мы должны хранить различные предметы в качестве ключей и учителей в качестве данных, используя встроенную структуру данных с использованием карты, однако невозможно иметь дубликаты ключей, поэтому я должен сохранить значения в виде списка. Данные должны быть прочитаны как файл. Сначала я по ошибке выполнил задание, прочитав файл и сохранив студентов в качестве ключей, но не уверен, как бы я это сделал в этом случае. Вот функция, которую я использовал для чтения файла в хэш-карту:

public static Map<String, String> getteachers(){

        Map<String, String> teachers = new HashMap<String, String>();
        BufferedReader buffer = null;

        try{
            File file = new File(filePath1);
            buffer = new BufferedReader( new FileReader(file) );
            String line = null;

            while ( (line = buffer.readLine()) != null ){

                String[] parts = line.split(", ");
                String teacher = parts[0].trim();
                String subject = parts[1].trim();

                if( !subject.equals("") && !teacher.equals("") )
                    teachers.put(teacher, subject);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(buffer != null){
                try { 
                    buffer.close(); 
                }catch(Exception e){};
            }
        }        
        return teachers;
    }

1 Ответ

0 голосов
/ 24 апреля 2020
     public static Map<String, List<String>> getTeachers(String filePath1) {
        Map<String, List<String>> teachers = new HashMap<>();
        BufferedReader buffer = null;
        try {
            File file = new File(filePath1);
            buffer = new BufferedReader(new FileReader(file));
            String line = null;
            while ((line = buffer.readLine()) != null) {
                String[] parts = line.split(", ");
                String teacher = parts[0].trim();
                String subject = parts[1].trim();

                if (!subject.equals("") && !teacher.equals("")) {
                    if (!teachers.containsKey(teacher)) {
                        List<String> list = new ArrayList<>();
                        list.add(subject);
                        teachers.put(teacher, list);
                    } else {
                        teachers.get(teacher).add(subject);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (buffer != null) {
                try {
                    buffer.close();
                } catch (Exception e) {
                }
            }
        }
        return teachers;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...