#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>