Запись из hashmap в txt файл

У меня есть хэш-карта Integer,String (K,V) и я хочу записать в файл только строковые значения (а не ключ Integer), и я хочу записать только некоторые 1-е n записей (без определенного порядка) в файл, а не вся карта. Я много пытался осмотреться, но не смог найти способ записать 1-е n записей в файл (есть примеры, когда я могу преобразовать значение в массив строк, а затем сделать это), но тогда он не обеспечивает правильный формат в который я хочу записать в файл)


person mag443    schedule 14.03.2013    source источник
comment
then it does not provide the correct format in which I want to write the file о каком формате вы говорите?   -  person nattyddubbs    schedule 14.03.2013
comment
Я хочу, чтобы строки печатались такими, какие они есть... 1 в каждой строке... а не в виде списка [], т.е. разделенных запятой   -  person mag443    schedule 14.03.2013


Ответы (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
comment
Да, возможно, кому-то еще это будет полезно при исследовании реальной проблемы. Писать код было проще, чем подшучивать над спрашивающим, пытаясь определить, зачем код нужен. Мои извинения пуристам SO. :) - person AWT; 14.03.2013
comment
лучше бы вы объяснили свой код, без объяснения этот код бесполезен. как вы сказали, это будет полезно для других, если они поймут. без объяснения они могли просто скопировать/вставить. :) - person PermGenError; 14.03.2013
comment
Спасибо, чувак ... это не вопрос HW .... Я новичок в java и немного запутался с итераторами и счетчиками ... выше объясняется, что мне нужно - person mag443; 14.03.2013
comment
тем не менее, я добавил несколько комментариев, объясняющих, что происходит в цикле. Это полезнее, чем раскомментированный блок кода. - person AWT; 14.03.2013
comment
Можно ли сделать то же самое с помощью PrintWriter? потому что я хочу скопировать определенное количество значений из нескольких хэш-карт в один и тот же файл... - person mag443; 14.03.2013
comment
Я уверен, что это возможно, просто вместо этого нужно использовать PrintWriter. Попробуйте, если у вас возникнут проблемы, дайте мне знать. - person AWT; 18.03.2013
comment
Ну, это не моя домашняя работа, но она была очень ясной и полезной для меня. +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
comment
Можете ли вы предоставить код итератора со счетчиком? Думаю это то что мне нужно.. - person mag443; 14.03.2013

Ссылка: Java API

Попробуй это

  1. Получить коллекцию значений с карты. Прочтите справку по объекту Map и найдите метод с именем values. Используйте этот метод
  2. Переберите набор значений, которые вы получили на шаге 1. Запишите некоторые (по вашему выбору) в файл. Отформатируйте по желанию во время записи.
person DwB    schedule 14.03.2013