Функциональность Java printf для коллекций или массивов
-
02-07-2019 - |
Вопрос
В Python вы можете использовать кортеж в операторе форматированной печати, и значения кортежа используются в указанных позициях в форматированной строке.Например:
>>> a = (1,"Hello",7.2)
>>> print "these are the values %d, %s, %f" % a
these are the values 1, Hello, 7.200000
Есть ли какой-нибудь способ использовать любой массив или коллекцию в операторе Java printf аналогичным образом?
Я посмотрел на документация и, похоже, в нем есть встроенная поддержка некоторых типов, таких как Календарь, но я ничего не вижу для коллекций.
Если это не предусмотрено в Java, существует ли какая-либо идиома Java, которая будет использоваться в таком случае, когда вы заполняете коллекции, а затем печатаете значения из многих коллекций, используя одну строку формата (кроме просто вложенного цикла)?
Решение
printf будет иметь объявление следующего содержания:
public PrintString printf(String format, Object... args);
...означает почти то же самое, что и []
.Разница в том, ...
позволяет вызывающей стороне пропустить явное создание массива.Итак, подумайте:
out.printf("%s:%s", a, b);
Это эквивалент:
out.printf("%s:%s", new Object[] { a, b });
Итак, возвращаясь к вашему вопросу: для массива вы можете просто написать:
out.printf("%s:%s", things);
Для коллекции:
out.printf("%s:%s", things.toArray());
Другие советы
Вас может заинтересовать Формат сообщения класс тоже.