当前位置: 首页 > news >正文

java 控制台画表格_Java库在控制台上构建和打印表格?

我正在寻找这样的东西,并最终自己写了,我很高兴与大家分享。我想要的东西,我可以用这样的

ConsoleStringTable table= new ConsoleStringTable();

table.addString(0, 0, "AveryVeryVeryLongWord");

table.addString(0, 1, "AnotherWord");

table.addString(1, 0, "Short");

table.addString(1, 1, "Fast");

System.out.println(table.toString());

AveryVeryVeryLongWord AnotherWord

Short Fast

实施

利用番石榴用于填充

package util;

import java.util.HashMap;

import java.util.Map;

import com.google.common.base.Strings;

public class ConsoleStringTable {

private class Index {

int _row, _colum;

public Index (int r, int c) {

_row= r;

_colum= c;

}

@Override

public boolean equals (Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Index other= (Index) obj;

if (_colum != other._colum)

return false;

if (_row != other._row)

return false;

return true;

}

@Override

public int hashCode() {

final int prime= 31;

int result= 1;

result= prime * result + _colum;

result= prime * result + _row;

return result;

}

}

Map _strings= new HashMap();

Map _columSizes= new HashMap();

int _numRows= 0;

int _numColumns= 0;

public void addString (int row, int colum, String content) {

_numRows= Math.max(_numRows, row + 1);

_numColumns= Math.max(_numColumns, colum + 1);

Index index= new Index(row, colum);

_strings.put(index, content);

setMaxColumnSize(colum, content);

}

private void setMaxColumnSize (int colum, String content) {

int size= content.length();

Integer currentSize= _columSizes.get(colum);

if (currentSize == null || (currentSize != null && currentSize < size)) {

_columSizes.put(colum, size);

}

}

public int getColumSize (int colum) {

Integer size= _columSizes.get(colum);

if (size == null) {

return 0;

} else {

return size;

}

}

public String getString (int row, int colum) {

Index index= new Index(row, colum);

String string= _strings.get(index);

if (string == null) {

return "";

} else {

return string;

}

}

public String getTableAsString (int padding) {

String out= "";

for (int r= 0; r < _numRows; r++) {

for (int c= 0; c < _numColumns; c++) {

int columSize= getColumSize(c);

String content= getString(r, c);

int pad= c == _numColumns - 1 ? 0 : padding;

out+= Strings.padEnd(content, columSize + pad, ' ');

}

if (r < _numRows - 1) {

out+= "\n";

}

}

return out;

}

@Override

public String toString() {

return getTableAsString(1);

}

}

相关文章:

  • 242. valid anagram java_Leetcode242 Valid Anagram JAVA语言
  • java 查找大写字母_Java实现给定一个包含大写字母和小写字母的字符串,找到通过这些...
  • java 绘图球的移动_在Java上绘制2个朝不同方向移动的球,但一个消失了
  • php中购物车结算代码,jquery购物车结算功能实现方法
  • php.ini配置 耗时,配置PHP.INI监测服务器的脚本耗时
  • java自动生成测试与评估,jmeter如何自动生成测试报告
  • php memcached存储对象,从memcached获取对象并在PHP中设置为self
  • java阅读安卓,java – 如何在android中逐行阅读?
  • plotm matlab,MATLAB画地图的工具:worldmap和m_map
  • matlab不能盗版吗,matlab为了防止盗版,会不会篡改程序运行结果?这是明证
  • matlab 复权数据,〖Matlab〗基于通达信股价数据的复权处理(fantuanxiaot版本)
  • 微信小程序向php传递数据,微信小程序 跳转传递数据的方法
  • mysql8默认存储,MySQL 8.0安装
  • php berkeleydb,berkeleydb-5.1
  • matlab vs 打包exe文件路径,Matlab中調用VS編譯的exe文件並傳遞變量 的方法
  • 78. Subsets
  • CSS相对定位
  • Docker容器管理
  • DOM的那些事
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • 关于List、List?、ListObject的区别
  • 入门到放弃node系列之Hello Word篇
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 赢得Docker挑战最佳实践
  • 用quicker-worker.js轻松跑一个大数据遍历
  • ​学习一下,什么是预包装食品?​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (23)Linux的软硬连接
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (JS基础)String 类型
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net Winform开发笔记(一)
  • .net 获取url的方法
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET企业级应用架构设计系列之技术选型
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @angular/cli项目构建--Dynamic.Form
  • @Bean注解详解
  • @vue/cli 3.x+引入jQuery
  • [145] 二叉树的后序遍历 js
  • [acm算法学习] 后缀数组SA
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步