У меня есть хэш-карта Integer,String (K,V) и я хочу записать в файл только строковые значения (а не ключ Integer), и я хочу записать только некоторые 1-е n записей (без определенного порядка) в файл, а не вся карта. Я много пытался осмотреться, но не смог найти способ записать 1-е n записей в файл (есть примеры, когда я могу преобразовать значение в массив строк, а затем сделать это), но тогда он не обеспечивает правильный формат в который я хочу записать в файл)
Запись из hashmap в txt файл
Ответы (3)
Это звучит как домашнее задание.
public static void main(String[] args) throws IOException {
// first, let's build your hashmap and populate it
HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "Value1");
map.put(2, "Value2");
map.put(3, "Value3");
map.put(4, "Value4");
map.put(5, "Value5");
// then, define how many records we want to print to the file
int recordsToPrint = 3;
FileWriter fstream;
BufferedWriter out;
// create your filewriter and bufferedreader
fstream = new FileWriter("values.txt");
out = new BufferedWriter(fstream);
// initialize the record count
int count = 0;
// create your iterator for your map
Iterator<Entry<Integer, String>> it = map.entrySet().iterator();
// then use the iterator to loop through the map, stopping when we reach the
// last record in the map or when we have printed enough records
while (it.hasNext() && count < recordsToPrint) {
// the key/value pair is stored here in pairs
Map.Entry<Integer, String> pairs = it.next();
System.out.println("Value is " + pairs.getValue());
// since you only want the value, we only care about pairs.getValue(), which is written to out
out.write(pairs.getValue() + "\n");
// increment the record count once we have printed to the file
count++;
}
// lastly, close the file and end
out.close();
}
person
AWT
schedule
14.03.2013
Да, возможно, кому-то еще это будет полезно при исследовании реальной проблемы. Писать код было проще, чем подшучивать над спрашивающим, пытаясь определить, зачем код нужен. Мои извинения пуристам SO. :)
- person AWT; 14.03.2013
лучше бы вы объяснили свой код, без объяснения этот код бесполезен. как вы сказали, это будет полезно для других, если они поймут. без объяснения они могли просто скопировать/вставить. :)
- person PermGenError; 14.03.2013
Спасибо, чувак ... это не вопрос HW .... Я новичок в java и немного запутался с итераторами и счетчиками ... выше объясняется, что мне нужно
- person mag443; 14.03.2013
тем не менее, я добавил несколько комментариев, объясняющих, что происходит в цикле. Это полезнее, чем раскомментированный блок кода.
- person AWT; 14.03.2013
Можно ли сделать то же самое с помощью PrintWriter? потому что я хочу скопировать определенное количество значений из нескольких хэш-карт в один и тот же файл...
- person mag443; 14.03.2013
Я уверен, что это возможно, просто вместо этого нужно использовать PrintWriter. Попробуйте, если у вас возникнут проблемы, дайте мне знать.
- person AWT; 18.03.2013
Ну, это не моя домашняя работа, но она была очень ясной и полезной для меня. +1
- person Matthew S.; 20.11.2013
Просто течение...
Получить итератор для значений. Перебирайте их, увеличивая счетчик. Выйти, когда счетчик достигнет n записей.
Другой подход заключается в использовании
for(int i=0, max=hashmap.size(); i<max, i<n; i++) { ... }
person
Sudhanshu Umalkar
schedule
14.03.2013
Можете ли вы предоставить код итератора со счетчиком? Думаю это то что мне нужно..
- person mag443; 14.03.2013
Ссылка: Java API
Попробуй это
- Получить коллекцию значений с карты. Прочтите справку по объекту Map и найдите метод с именем
values
. Используйте этот метод - Переберите набор значений, которые вы получили на шаге 1. Запишите некоторые (по вашему выбору) в файл. Отформатируйте по желанию во время записи.
person
DwB
schedule
14.03.2013
then it does not provide the correct format in which I want to write the file
о каком формате вы говорите? - person nattyddubbs   schedule 14.03.2013