Функциональность Java printf для коллекций или массивов

StackOverflow https://stackoverflow.com/questions/146390

  •  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());

Другие советы

Вас может заинтересовать Формат сообщения класс тоже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top