Java输出数据对齐的问题
来源:互联网 发布:三层网络 网络架构 编辑:程序博客网 时间:2024/05/18 02:20
因程序需求用到了这个,发现 \t 和 String.format 并不能解决问题。
我的思路是把所有输出的数据放在List里面。先计算所有列中行的最大长度,小于这个长度的行空格补齐。
废话就不多说了直接上代码。。。
public class TableFormat { public List<List<String>> data = new ArrayList<>(); public static void main(String[] args) { List<List<String>> data = new ArrayList<>(); data.add(new ArrayList<String>() {{ add("time"); add("size"); add("name"); add("url"); }}); data.add(new ArrayList<String>() {{ add("2017-07-05 17:58:52.0"); add("8.33 MB"); add("FraudDetection-12.0.jar"); add("http://myqcloud.com/FraudDetection-12.0.jar"); }}); data.add(new ArrayList<String>() {{ add("2016-12-18 16:24:05.0"); add("202 MB"); add("hadoop-2.7.2.tar.gz"); add("http://myqcloud.com/hadoop-2.7.2.tar.gz"); }}); data.add(new ArrayList<String>() {{ add("2017-07-10 17:07:16.0"); add("13.03 KB"); add("stopwords.txt"); add("http://myqcloud.com/stopwords.txt"); }}); data.add(new ArrayList<String>() {{ add("2017-07-07 08:33:55.0"); add("192 MB"); add("text-classifier-10.0.jar"); add("http://myqcloud.com/text-classifier-10.0.jar"); }}); new TableFormat(data).println(10); } public void println(Integer interval) { Integer width = data.get(0).size(); Integer high = data.size(); Integer[] maxWidths = getMaxWidth(); for (int i = 0; i < high; i++) { for (int y = 0; y < width; y++) { String text = data.get(i).get(y); Integer maxWidth = maxWidths[y]; if (y > 0) { maxWidth+=interval; } System.out.print(getPlace(text, maxWidth)); } System.out.println(); } } public String getPlace(String text, Integer maxWidth) { int textSize = text.length(); for (int i = 0; i < maxWidth - textSize; i++) { text = " " + text; } return text; } /** * 计算每一列每行内容的最大长度 */ public Integer[] getMaxWidth() { Integer width = data.get(0).size(); Integer high = data.size(); Integer[] widthArray = new Integer[width]; for (int w = 0; w < width; w++) { String[] array = new String[high]; for (int h = 0; h < high; h++) { array[h] = data.get(h).get(w); } widthArray[w] = getLengthMax(array); } return widthArray; } /** * 获取数组字符串中长度最大的值 */ public Integer getLengthMax(String[] arr) { Integer max = arr[0].length(); for (int i = 1; i < arr.length; i++) { if (arr[i].length() > max) { max = arr[i].length(); } } return max; } public TableFormat() { } public TableFormat(List<List<String>> data) { this.data = data; } public List<List<String>> getData() { return data; } public void setData(List<List<String>> data) { this.data = data; }}
输出结果如下:
ok~
阅读全文
0 0
- Java输出数据对齐的问题
- Java输出数据的对齐方法
- Python的print输出中文对齐问题
- 字符串输出对齐问题
- java中字符串或数字的对齐方式和输出所占用的宽度的问题
- java中字符串或数字的对齐方式和输出所占用的宽度的问题
- ADC左对齐与右对齐的数据读取问题
- Java入门之输出宽度及对齐问题
- c++如何输出文本中两列对齐的数据
- Java中中英文对齐输出问题,以及Java中的格式化输出
- 关于数据对齐问题
- sizeof数据对齐问题
- 数据对齐问题
- 数据对齐问题
- sizeof 数据对齐问题
- 数据对齐问题
- java Swing组件的对齐问题
- java Swing组件的对齐问题2
- 攻破JAVA NIO技术壁垒
- hdu 1181变形课 搜索水题 dfs
- Java中的Do-while循环
- FileLock类实现文件操作的并发访问
- ORACLE SQL 优化策略-1
- Java输出数据对齐的问题
- 三大包装对象与Boolean()转型对象
- Android Studio SDK 使用国内镜像源在线安装
- html的行内元素和块级元素
- sdk
- microPython在STM32跑一跑
- 关于在项目中以及日常生活中所用到的密码加密。
- MySQL篇—解压版---Win10系统
- vue组件4-props传参2