ちょっとしたフォーマッティング
javaでログ出力をしていると、少しだけフォーマットしたいときがある。
テンプレートエンジンを利用する必要はない。
1行でパパっとフォーマッティングしたい。
例えば、処理件数を出力するとき、下記のように標準出力に処理中の件数をそのまま出力する。
1 2 3 4 5 6 7 8 9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 処理中。1000 処理中。2000 処理中。3000 処理中。4000 処理中。5000 処理中。6000 処理中。7000 処理中。8000 処理中。9000 処理中。10000 処理中。11000 処理中。12000 処理完了。12345 |
たしかに、処理件数は出力される。
ここで、java.text.MessageFormatを利用すると、件数を3桁カンマ付きで出力できる。
1 2 3 4 5 6 7 8 9 10 11 | import java.text.MessageFormat; long counter = 0; for (Dto dto : dtoList) { logic(dto); counter++; if (counter % 1000 == 0) { System.out.println(MessageFormat.format("処理中。{0}", counter)); } } System.out.println(MessageFormat.format("処理完了。{0}", counter)); |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 処理中。1,000 処理中。2,000 処理中。3,000 処理中。4,000 処理中。5,000 処理中。6,000 処理中。7,000 処理中。8,000 処理中。9,000 処理中。10,000 処理中。11,000 処理中。12,000 処理完了。12,345 |
String.formatを利用すると、出力桁を簡単に固定できるため、この方法も見通しが良い。
1 2 3 4 5 6 7 8 9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1000 処理中。 2000 処理中。 3000 処理中。 4000 処理中。 5000 処理中。 6000 処理中。 7000 処理中。 8000 処理中。 9000 処理中。 10000 処理中。 11000 処理中。 12000 処理中。 12345 処理完了。 |
数字の桁数が合ったので、数字を前にした。
String.formatもMessageFormat.formatも、たくさんのフォーマットを持っているので、
すべてを覚えてもよいかもしれないが、やりたいことから覚えてもよいと思う。
同じタグの記事
- EclipseLinkでJPA
- eclipseの良く使うショートカットキー
- eclipseデフォルトの文字コード
- itext5でPDFを暗号化する
- Java DateFormat
- Java8で指定回数繰り返し
- Java9でJAXB
- JavaでZip圧縮
- javaでイメージフォーマット変換
- javaでダミー画像作成
同じカテゴリの記事