gpt4 book ai didi

java - 动态以格式化表格式打印HashMap

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:00 32 4
gpt4 key购买 nike

这是一个非常普遍的问题。我有一个 HashMap ,我想以表格格式动态打印它,而无需事先知道内容的大小。表的间距应该很好,就像我们在数据库查询结果中看到的那样。是否有任何库/实用程序可以直接帮助这种类型的转换?或者JAVA有一些我可以利用的内在函数吗?

我编写的代码非常幼稚,并且不适合字符串的动态长度。我还需要对齐行。

    StringWriter returnString = new StringWriter();
Map<String,HashMap<String, String>> hashMap = new HashMap<String, HashMap<String, String>>();
for (Entry e : hashMap.entrySet()) {
HashMap<String, Number> hm = (HashMap<String, Number>) e.getValue();
String key = (String) e.getKey();
returnString.append("|\t").append(key).append("\t|");
for (Entry en : hm.entrySet()){
returnString.append("|\t").append((String) en.getValue()).append("\t|");
}
returnString.append("\r\n");
}
return returnString.toString();

无论字符串长度如何,输出都应该像这样

s1      |     s3     |     s4
askdkc | asdkask | jksjndan

最佳答案

看起来您已经弄清楚了迭代并且正在处理格式。您可以将其放入 TableModel 中,并让 JTable 处理表格格式。

您可以选择固定列宽或迭代一次条目以找到每列的最大长度,然后再次使用适当的填充来打印它们。

另一种选择是扩展 HashMap,以便在添加条目时记录最长的键和值:

package com.example;

public class MyHashMap<K, V> extends java.util.HashMap<K, V> {

private int maxKeyLength = 0;
private int maxValueLength = 0;

@Override
public V put(K key, V value) {
maxKeyLength = Math.max(maxKeyLength, key.toString().length());
maxValueLength = Math.max(maxValueLength, value.toString().length());
return value;
};

public int getMaxKeyLength() {
return maxKeyLength;
}

public int getMaxValueLength() {
return maxValueLength;
}
}

请注意,这忽略了您还删除项目的明显情况 - 根据您的使用模式,如果您在删除具有最长键/值的条目时还想缩小列,则必须做更多或更多的工作。

关于java - 动态以格式化表格式打印HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141952/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com