Arraylist с двумя записями проводки

#java #arraylist #collections #treemap

#java #arraylist #Коллекции #древовидная карта

Вопрос:

Я новичок в коллекциях. Мне нужно знать, как я могу использовать ArrayList с двумя записями. Я пишу программу, которая считывает файл и сохраняет строку в treemap и связывает строку с ArrayList с двумя столбцами (идентификатор документа, количество). Мне интересно, как я могу это сделать. Может ли кто-нибудь помочь мне с некоторыми рекомендациями о том, как я могу это сделать? Вот как должна работать система:

введите описание изображения здесь

Например: если программа считывает слово «Привет», эти слова необходимо добавить в treemap как Treemap («Привет», Arraylist).

Слово Hello связано с (documentId, Count) в ArrayList.

Комментарии:

1. Возможно, вы могли бы просто попробовать что-нибудь и спросить нас, если у вас возникнут какие-то проблемы? Обратите внимание, что есть довольно хорошие учебные пособия по этим темам, и JavaDocs также весьма полезны.

2. Чтобы поместить значения в a TreeMap , вы просто используете map.put(key, value) , где в вашем случае значение равно ArrayList .

3. Также смотрите Официальные руководства Oracle по коллекциям

Ответ №1:

В arraylist мы не можем хранить в паре ключ-значение, поэтому вместо ArrayList вы можете использовать pair . Пара <Строка, целое число> пара = новая пара <Строка, целое число> («documentId», количество); TreeMap(«Привет», пара);

Ответ №2:

Вы не можете поместить два значения в ArrayList. Вы могли бы создать новый класс для хранения documentId и count . А затем сохраните этот новый класс в списке в TreeMap:

 public class CountPerDocument {
    private final String documentId;
    private final int count;
    
    CountPerDocument(String documentId, int count){

        this.documentId = documentId;
        this.count = count;
    }

    public String getDocumentId() {
        return documentId;
    }

    public int getCount() {
        return count;
    }
}
 

И заполните вашу карту следующим образом

 Map<String, List<CountPerDocument>> map = new TreeMap<>();
List<CountPerDocument> list = new ArrayList<>();
//add code to fill your list here
list.add(new CountPerDocument("yourId", 23));
map.put("term", list);
 

Комментарии:

1. Мне интересно, как работает извлечение для этого метода? Скажем, например: Суд, (S1,1) Суд, (S2,5) Выводит ли карта все необходимые значения?

2. Ну, map.get(«term») возвращает список со всем CountPerDocument, который включает все документы и количество раз, когда термин появляется в каждом документе.

3. Привет, как мне распечатать все элементы в TreeMap следующим образом: <String> <DocID — Count>