日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java网格画线_java 网格输出的类--练习 stream

發布時間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java网格画线_java 网格输出的类--练习 stream 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在做測試的時候,經常需要把一些信息輸出到控制臺,但是格式上比較亂,想弄成一個類似 SQL 客戶端的那個輸出格式,在參考了一些資料后自己寫了一個簡單的控制臺網格輸出的類,分享代碼供大家參考。

使用方法:暫時支持了 map 和 list 兩種類型的數據展示,并沒有提供 header 功能。

public static void main(String[] args) {

List ss0 = Arrays.asList("234", "432", "54");

List ss3 = Arrays.asList("234", "432", "54", "54", "54");

List ss1 = Arrays.asList("6546", "7675");

Map sss = new HashMap<>();

sss.put(getNanoMark() + EMPTY, "fdsf");

sss.put(getNanoMark() + EMPTY, "fdsfdsaff");

sss.put(getNanoMark() + EMPTY, "fdsf");

sss.put(getNanoMark() + EMPTY, "fdsfafdsf");

sss.put(getNanoMark() + EMPTY, "fdsf");

sss.put(getMark() + EMPTY, "fdsf");

show(sss);

List> rows = Arrays.asList(ss1, ss3, ss0);

show(rows);

JSONObject json = new JSONObject();

json.put("3234", 32432);

json.put("323dsa4", 32432);

json.put("3fdsa234", 32432);

json.put("323fdsf4", 32432);

json.put("32d34", 32432);

json.put("32fdsafdf34", 32432);

show(json);

}

效果展示:

類代碼如下(下一步優化其他數據類型和 header 以及邊欄支持):

package com.fun.utils;

import com.fun.frame.SourceCode;

import net.sf.json.JSONObject;

import org.apache.commons.lang3.StringUtils;

import java.util.*;

import java.util.stream.Collectors;

public class ConsoleTable extends SourceCode {

List rowLength = new ArrayList<>();

public static void show(Map map) {

new ConsoleTable(map);

}

public static void show(List> rows) {

new ConsoleTable(rows);

}

/**

* 輸出map

*

* @param map

*/

private ConsoleTable(Map map) {

Set set = map.keySet();

int asInt0 = set.stream().mapToInt(key -> key.toString().length()).max().getAsInt();

rowLength.add(asInt0 + 2);

List values = new ArrayList<>();

set.forEach(key -> values.add(map.get(key).toString()));

int asInt1 = values.stream().mapToInt(value -> value.length()).max().getAsInt();

rowLength.add(asInt1 + 2);

StringBuffer stringBuffer = new StringBuffer(LINE + getHeader());

map.forEach((k, v) -> {

stringBuffer.append(getCel(0, k.toString()));

stringBuffer.append(getCel(1, v.toString()));

});

output(stringBuffer.append(LINE + getHeader()).toString());

}

/**

* 輸出list

*

* @param rows

*/

private ConsoleTable(List> rows) {

for (int i = 0; i < rows.size(); i++) {

List line = rows.get(i);

for (int j = 0; j < line.size(); j++) {

String s = line.get(j);

if (rowLength.size() <= j) rowLength.add(0);

if (rowLength.get(j) < s.length()) rowLength.set(j, s.length());

}

}

rowLength = rowLength.stream().map(n -> n + 2).collect(Collectors.toList());

StringBuffer stringBuffer = new StringBuffer(LINE + getHeader());

for (int i = 0; i < rows.size(); i++) {

List line = rows.get(i);

for (int j = 0; j < rowLength.size(); j++) {

stringBuffer.append(getCel(j, j < line.size() ? line.get(j) : EMPTY));

}

}

output(stringBuffer.append(LINE + getHeader()).toString());

}

/**

* 獲取每一格的string

*

* @param colum 列

* @param content 格內容

* @return

*/

public String getCel(int colum, String content) {

Integer integer = rowLength.get(colum);

int i = integer - content.length();

return (colum == 0 ? LINE + PART : PART) + getManyString(SPACE_1, i / 2) + content + getManyString(SPACE_1, i - i / 2) + (rowLength.size() - colum == 1 ? PART : EMPTY);

}

/**

* 獲取頭尾行

*

* @return

*/

private String getHeader() {

List collect = rowLength.stream().map(size -> getManyString("-", size)).collect(Collectors.toList());

return "+" + StringUtils.join(collect.toArray(), "+") + "+";

}

}

這里使用了一些 stream 的用法,雖然比較生疏,但是效果很不錯,stream 語法很強大,使得編碼效率急速提升。在 groovy 語言使用 java 的 stream 各種方法時,還是遇到了不少的坑,目前主要還是符號兼容的問題比較多,所以盡量還是 java stream 的自己的語法比較好。

技術類文章精選

非技術文章精選

大咖風采

總結

以上是生活随笔為你收集整理的java网格画线_java 网格输出的类--练习 stream的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91视频免费观看 | 中文字幕第88页 | 三级av| 福利视频99 | 国产色秀 | 天天艹天天 | 三上悠亚在线观看一区二区 | 国产精品视频在线播放 | 日日操天天射 | 男生尿隔着内裤呲出来视频 | 夜夜爽av福利精品导航 | 天天碰天天碰 | 香蕉视频A | 中文字幕精品一区二区三区精品 | 黄色网在线看 | 日韩永久免费视频 | 久久久久久久国产精品 | 亚洲欧美日韩一区二区三区四区 | 国产三级全黄 | 色哟哟导航 | 艳妇乳肉豪妇荡乳xxx | 日本啪啪网| 亚洲国产日韩欧美在线观看 | 极品美女开粉嫩精品 | 欧美青草视频 | 国产亚洲女人久久久久毛片 | 男人的天堂aa | 一区二区三区网 | 国产男女精品 | 羞羞动漫在线观看 | 麻豆影视在线观看 | 久草热线 | 亚洲成人第一页 | 亚洲午夜久久久久久久国产 | av电影一区二区三区 | 日韩av一区二区在线 | 亚洲午夜18毛片在线看 | 强行侵犯视频在线观看 | 老女人毛片 | 草草影院在线 | 国产美女视频网站 | 亚洲自拍偷拍精品视频 | 国产伦精品一区二区三区精品 | 美女网站黄频 | 久久精品女人 | 6080av| 无码人妻精品一区二区三区99日韩 | 天天想夜夜操 | 亚洲精品一区二区18漫画 | 国产v亚洲v天堂无码久久久 | 日韩高清黄色 | 日韩黄页网站 | 邪恶久久 | 欧美级毛片 | 久操福利在线 | 香蕉福利 | 国产91亚洲 | 一区二区精品在线观看 | 四虎永久在线精品免费一区二区 | 黄色一级片毛片 | 少妇高潮一区二区三区喷水 | 日本性xxxxx 免费毛片视频网站 | 黑人巨大精品 | 少妇精品无码一区二区三区 | 一级黄色片免费观看 | 欧美色哟哟 | 日韩精品色哟哟 | 国产粉嫩白浆 | 黄色一区二区视频 | 伊人草草| 福利片在线观看 | 亚洲色图欧美在线 | 国产精品亚洲专区无码牛牛 | 熟女少妇一区二区三区 | 国产精品无码乱伦 | 精品无码一区二区三区在线 | 国产精品毛片一区二区三区 | 99久久久无码国产 | 人人爱人人艹 | 一级性生活大片 | 久久久久久亚洲 | 亚洲第一视频 | 久久涩| 91精品国产91久久久久久 | 成人h片在线观看 | 一区二区欧美视频 | 欧美激情一区二区三区 | 日韩欧美精品国产 | 日批大全 | 男人天堂怡红院 | 国产精品1区2区3区4区 | 中文字幕日本一区二区 | 国产精品国产一区 | 日韩精品免费一区二区夜夜嗨 | 免费黄色大片 | www.色婷婷.com| 亚洲制服丝袜一区 | av永久免费观看 | 久久黄色影视 |