У меня есть hashMap Integer, String (K, V) и хочу писать только строковые значения в файл (а не ключ Integer), и я хочу написать только некоторые 1-го n записей (без определенного порядка) в файл, а не всю карту. Я пробовал много оглядеться, но не смог найти способ записи 1-го n записей в файл. (Есть примеры, где я могу преобразовать значение в массив строк, а затем сделать это], но тогда он не обеспечивает правильный формат в котором я хочу, чтобы записать файл)Запись из hashmap в txt-файл
ответ
Просто поток ...
Получить итератор для значений. Итерации через них, увеличивающие счетчик. Выйдите, когда счетчик достигнет n записей.
Другой подход заключается в использовании
for(int i=0, max=hashmap.size(); i<max, i<n; i++) { ... }
Это звучит как домашнее задание.
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();
}
Да, возможно, кто-то еще найдет это полезным при исследовании реальной проблемы. Легче было написать код, чем это было, чтобы подшучивать взад и вперед с аськой, пытаясь определить * почему * код нужен. Приношу свои извинения за пуристов. :) – AWT
вам лучше объяснить свой код, без объяснения этого кода ничего не стоит. как вы сказали, это будет полезно для других, если они поймут. без объяснения, которые они могли бы просто скопировать/вставить. :) – PermGenError
Спасибо, чувак ... это не вопрос HW .... Я новичок в java и немного запутался с итераторами и счетчиками ... выше объясняет, что мне нужно – mag443
Ссылка: Java API
Попробуйте
- Получить коллекцию значений с карты. Прочтите ссылку на объект Map и найдите метод с именем
values
. Используйте этот метод - Итерируйте по набору значений, которые вы получили на шаге 1. Впишите некоторые (по вашему выбору) в файл. Форматируйте по мере необходимости во время записи.
'тогда он не дает правильный формат, в котором я хочу написать файл', о чем вы говорите? – nattyddubbs
Я хочу, чтобы строки были напечатаны так, как они ... 1 на каждой строке ... а не в виде списка [] i.e разделены запятой – mag443