Функциональность Java printf для коллекций или массивов - PullRequest
3 голосов
/ 28 сентября 2008

В 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, которая будет использоваться в случае, подобном этому, когда вы заполняете коллекции и затем печатаете значения из многих коллекций, используя одну строку формата (кроме простого вложенного цикла)

Ответы [ 2 ]

12 голосов
/ 28 сентября 2008

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());
2 голосов
/ 29 сентября 2008

Вас также может заинтересовать класс MessageFormat .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...