Funzionalità Java printf per raccolte o matrici
-
02-07-2019 - |
Domanda
In Python puoi usare una tupla in un'istruzione di stampa formattata e i valori di tupla vengono usati nelle posizioni indicate nella stringa formattata. Ad esempio:
>>> a = (1,"Hello",7.2)
>>> print "these are the values %d, %s, %f" % a
these are the values 1, Hello, 7.200000
Esiste un modo per utilizzare un array o una raccolta in un'istruzione java printf in modo simile?
Ho esaminato la documentazione e sembra avere il supporto integrato per alcuni tipi come Calendar, ma non vedo nulla per le raccolte.
Se questo non è fornito in Java, esiste un linguaggio Java che potrebbe essere usato in un caso come questo in cui si stanno popolando raccolte e quindi stampando i valori di molte raccolte usando una stringa di formato (oltre al semplice ciclo nidificato) ?
Soluzione
printf avrà una dichiarazione sulla falsariga di:
public PrintString printf(String format, Object... args);
... significa più o meno lo stesso di []
. La differenza è ...
consente al chiamante di omettere esplicitamente la creazione di un array. Quindi considera:
out.printf("%s:%s", a, b);
Questo è l'equivalente di:
out.printf("%s:%s", new Object[] { a, b });
Quindi, tornando alla tua domanda, per un array, puoi semplicemente scrivere:
out.printf("%s:%s", things);
Per una raccolta:
out.printf("%s:%s", things.toArray());
Altri suggerimenti
Potresti essere interessato dal anche MessageFormat .