fix numberUtil

This commit is contained in:
Looly 2020-09-28 08:35:05 +08:00
parent d014ccdf0c
commit e573fa48e7
3 changed files with 136 additions and 138 deletions

View File

@ -26,6 +26,7 @@
* 【poi 】 增加SheetReader和XXXRowHandlerissue#I1WHJP@Gitee
* 【dfa 】 增加过滤符号pr#1122@Github
* 【dfa 】 SensitiveUtil增加setCharFilter方法pr#1123@Github
* 【all 】 优化常量大小写规范pr#188@Gitee
### Bug修复
* 【crypto 】 修复SM2验签后无法解密问题issue#I1W0VP@Gitee

View File

@ -13,146 +13,146 @@ import java.util.List;
* @author 孙宇
*/
public class ConsoleTableUtil {
/**
* 每列最大字符个数
*/
private List<Integer> columnCharNumber;
/**
* 表格头信息
*/
private List<List<String>> headerList = new ArrayList<>();
/**
* 表格体信息
*/
private List<List<String>> bodyList = new ArrayList<>();
/**
* 每列最大字符个数
*/
private List<Integer> columnCharNumber;
/**
* 表格头信息
*/
private final List<List<String>> HEADER_LIST = new ArrayList<>();
/**
* 表格体信息
*/
private final List<List<String>> BODY_LIST = new ArrayList<>();
/**
* 添加头信息
*
* @param columns 列名
* @return 自身对象
*/
public ConsoleTableUtil addHeader(String... columns) {
columnCharNumber = new ArrayList<>(Collections.nCopies(columns.length, 0));
List<String> l = new ArrayList<>();
headerList.add(l);
for (int i = 0; i < columns.length; i++) {
String column = columns[i];
String col = Convert.toSBC(column);
l.add(col);
int width = col.length();
columnCharNumber.set(i, width);
}
return this;
}
/**
* 添加头信息
*
* @param columns 列名
* @return 自身对象
*/
public ConsoleTableUtil addHeader(String... columns) {
columnCharNumber = new ArrayList<>(Collections.nCopies(columns.length, 0));
List<String> l = new ArrayList<>();
HEADER_LIST.add(l);
for (int i = 0; i < columns.length; i++) {
String column = columns[i];
String col = Convert.toSBC(column);
l.add(col);
int width = col.length();
columnCharNumber.set(i, width);
}
return this;
}
/**
* 添加体信息
*
* @param values 列值
* @return 自身对象
*/
public ConsoleTableUtil addBody(String... values) {
List<String> l = new ArrayList<>();
bodyList.add(l);
for (int i = 0; i < values.length; i++) {
String value = values[i];
String val = Convert.toSBC(value);
l.add(val);
int width = val.length();
if (width > columnCharNumber.get(i)) {
columnCharNumber.set(i, width);
}
}
return this;
}
/**
* 添加体信息
*
* @param values 列值
* @return 自身对象
*/
public ConsoleTableUtil addBody(String... values) {
List<String> l = new ArrayList<>();
BODY_LIST.add(l);
for (int i = 0; i < values.length; i++) {
String value = values[i];
String val = Convert.toSBC(value);
l.add(val);
int width = val.length();
if (width > columnCharNumber.get(i)) {
columnCharNumber.set(i, width);
}
}
return this;
}
/**
* 获取表格字符串
*
* @return 表格字符串
*/
public String toString() {
StringBuilder sb = new StringBuilder();
border(sb);
for (List<String> headers : headerList) {
for (int i = 0; i < headers.size(); i++) {
if (i == 0) {
sb.append('|');
}
String header = headers.get(i);
sb.append(Convert.toSBC(" "));
sb.append(header);
sb.append(Convert.toSBC(" "));
int l = header.length();
int lw = columnCharNumber.get(i);
if (lw > l) {
for (int j = 0; j < (lw - l); j++) {
sb.append(Convert.toSBC(" "));
}
}
sb.append('|');
}
sb.append('\n');
}
border(sb);
for (List<String> bodys : bodyList) {
for (int i = 0; i < bodys.size(); i++) {
if (i == 0) {
sb.append('|');
}
String body = bodys.get(i);
sb.append(Convert.toSBC(" "));
sb.append(body);
sb.append(Convert.toSBC(" "));
int l = body.length();
int lw = columnCharNumber.get(i);
if (lw > l) {
for (int j = 0; j < (lw - l); j++) {
sb.append(Convert.toSBC(" "));
}
}
sb.append('|');
}
sb.append('\n');
}
border(sb);
return sb.toString();
}
/**
* 获取表格字符串
*
* @return 表格字符串
*/
public String toString() {
StringBuilder sb = new StringBuilder();
border(sb);
for (List<String> headers : HEADER_LIST) {
for (int i = 0; i < headers.size(); i++) {
if (i == 0) {
sb.append('|');
}
String header = headers.get(i);
sb.append(Convert.toSBC(" "));
sb.append(header);
sb.append(Convert.toSBC(" "));
int l = header.length();
int lw = columnCharNumber.get(i);
if (lw > l) {
for (int j = 0; j < (lw - l); j++) {
sb.append(Convert.toSBC(" "));
}
}
sb.append('|');
}
sb.append('\n');
}
border(sb);
for (List<String> bodys : BODY_LIST) {
for (int i = 0; i < bodys.size(); i++) {
if (i == 0) {
sb.append('|');
}
String body = bodys.get(i);
sb.append(Convert.toSBC(" "));
sb.append(body);
sb.append(Convert.toSBC(" "));
int l = body.length();
int lw = columnCharNumber.get(i);
if (lw > l) {
for (int j = 0; j < (lw - l); j++) {
sb.append(Convert.toSBC(" "));
}
}
sb.append('|');
}
sb.append('\n');
}
border(sb);
return sb.toString();
}
private void border(StringBuilder sb) {
sb.append('*');
for (Integer width : columnCharNumber) {
sb.append(Convert.toSBC(StrUtil.fillAfter("", '-', width + 2)));
sb.append('*');
}
sb.append('\n');
}
private void border(StringBuilder sb) {
sb.append('*');
for (Integer width : columnCharNumber) {
sb.append(Convert.toSBC(StrUtil.fillAfter("", '-', width + 2)));
sb.append('*');
}
sb.append('\n');
}
public void print() {
Console.print(toString());
}
public void print() {
Console.print(toString());
}
public static void main(String[] args) {
ConsoleTableUtil t = new ConsoleTableUtil();
t.addHeader("姓名", "年龄");
t.addBody("张三", "15");
t.addBody("李四", "29");
t.addBody("王二麻子", "37");
t.print();
public static void main(String[] args) {
ConsoleTableUtil t = new ConsoleTableUtil();
t.addHeader("姓名", "年龄");
t.addBody("张三", "15");
t.addBody("李四", "29");
t.addBody("王二麻子", "37");
t.print();
t = new ConsoleTableUtil();
t.addHeader("体温", "占比");
t.addHeader("", "%");
t.addBody("36.8", "10");
t.addBody("37", "5");
t.print();
t = new ConsoleTableUtil();
t.addHeader("体温", "占比");
t.addHeader("", "%");
t.addBody("36.8", "10");
t.addBody("37", "5");
t.print();
t = new ConsoleTableUtil();
t.addHeader("标题1", "标题2");
t.addBody("12345", "混合321654asdfcSDF");
t.addBody("sd e3ee ff22", "ff值");
t.print();
}
t = new ConsoleTableUtil();
t.addHeader("标题1", "标题2");
t.addBody("12345", "混合321654asdfcSDF");
t.addBody("sd e3ee ff22", "ff值");
t.print();
}
}

View File

@ -1713,11 +1713,8 @@ public class NumberUtil {
*/
public static boolean equals(BigDecimal bigNum1, BigDecimal bigNum2) {
//noinspection NumberEquality
/*if (bigNum1 == bigNum2){
return true;
}*/
// 如果要进行null判断,那直接进行判断null,而不是使用 == 来判断容易引起误解
if (bigNum1 == null && bigNum2 == null){
if (bigNum1 == bigNum2){
// 如果用户传入同一对象省略compareTo以提高性能
return true;
}
if (bigNum1==null || bigNum2==null){