Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Java program to print table using formatter

In this post, I am going to demo an utility class to print the Table data in left aligned, right aligned, left aligned in upper case and right aligned in upper case etc.,

 

I am using String.format method to format (for left and right alignments) the given column of the row.

 

Find the below working application.

 


StringTableUtils.java

package com.sample.app.strings;

import static java.lang.Math.max;
import static java.lang.String.format;

import java.util.List;

public class StringTableUtils {

	public static enum FormattingConstants {
		LEFT_ALIGN("%-{MAX_COLUMN_LENGTH}s"), RIGHT_ALIGN("%{MAX_COLUMN_LENGTH}s"),
		LEFT_ALIGN_CAPITAL_CASE("%-{MAX_COLUMN_LENGTH}S"), RIGHT_ALIGN_CAPITAL_CASE("%{MAX_COLUMN_LENGTH}S");

		private String val;

		FormattingConstants(String val) {
			this.val = val;
		}

		String formatString(int width) {
			return val.replace("{MAX_COLUMN_LENGTH}", "" + width);
		}
	}

	private StringTableUtils() {
	}

	private static int[] maxColumnLengths(List> table) {
		final int tableWidth = table.get(0).size();
		int[] maxColumnLength = new int[tableWidth];
		for (List row : table) {
			if (row.size() != tableWidth) {
				throw new IllegalArgumentException("Mismatch found in table widith. FirstRow size  = " + tableWidth
						+ ", current row size : " + row.size());
			}

			for (int i = 0; i return maxColumnLength;
	}

	private static String[] formatStringsForTheColumn(List> table, FormattingConstants alignment) {
		if (table.isEmpty()) {
			throw new IllegalArgumentException("Table is empty");
		}

		final int tableWidth = table.get(0).size();
		int maxColumnLengths[] = maxColumnLengths(table);
		String[] formatStrings = new String[tableWidth];
		for (int i = 0; i return formatStrings;
	}

	public static String tableToString(List> table, FormattingConstants alignment, char columnSeparator) {
		String[] formatStrings = formatStringsForTheColumn(table, alignment);

		StringBuilder builder = new StringBuilder();

		for (List row : table) {
			for (int i = 0; i "\n");
		}
		return builder.toString();
	}
}

StringTableUtilsDemo.java

package com.sample.app;

import static com.sample.app.strings.StringTableUtils.tableToString;

import java.util.Arrays;
import java.util.List;

import com.sample.app.strings.StringTableUtils.FormattingConstants;

public class StringTableUtilsDemo {
	public static void main(String[] args) {
		List row1 = Arrays.asList("country", "capital", "Population");
		List row2 = Arrays.asList("India", "New Delhi", "1,425,775,850");
		List row3 = Arrays.asList("Canada", "Ottawa", "39,566,248");

		List> table = Arrays.asList(row1, row2, row3);

		System.out.println("Left alignment table");
		System.out.println(tableToString(table, FormattingConstants.LEFT_ALIGN, '|'));

		System.out.println("\nRight alignment table");
		System.out.println(tableToString(table, FormattingConstants.RIGHT_ALIGN, '|'));

		System.out.println("\nLeft alignment & capital case table");
		System.out.println(tableToString(table, FormattingConstants.LEFT_ALIGN_CAPITAL_CASE, '|'));

		System.out.println("\nRight alignment & capital case table");
		System.out.println(tableToString(table, FormattingConstants.RIGHT_ALIGN_CAPITAL_CASE, '|'));
	}

}

Output

Left alignment table
|country|capital  |Population   |
|India  |New Delhi|1,425,775,850|
|Canada |Ottawa   |39,566,248   |


Right alignment table
|country|  capital|   Population|
|  India|New Delhi|1,425,775,850|
| Canada|   Ottawa|   39,566,248|


Left alignment & capital case table
|COUNTRY|CAPITAL  |POPULATION   |
|INDIA  |NEW DELHI|1,425,775,850|
|CANADA |OTTAWA   |39,566,248   |


Right alignment & capital case table
|COUNTRY|  CAPITAL|   POPULATION|
|  INDIA|NEW DELHI|1,425,775,850|
| CANADA|   OTTAWA|   39,566,248



Previous                                                 Next                                                 Home


This post first appeared on Java Tutorial : Blog To Learn Java Programming, please read the originial post: here

Share the post

Java program to print table using formatter

×

Subscribe to Java Tutorial : Blog To Learn Java Programming

Get updates delivered right to your inbox!

Thank you for your subscription

×