gpt4 book ai didi

java - 将 hashmap 中的数据写入 CSV 文件

转载 作者:行者123 更新时间:2023-11-30 11:42:39 28 4
gpt4 key购买 nike

假设我有一个 HashMap ,其中 String 类型作为键,ArrayList 类型作为值,示例 {"value1"=["one","three","five"], "value2"=["two","four","six"]} 其中“value1”和“value2”是键。我想用下面的格式写上面的 hashmap 数据。 (以便我可以在 excel 中读取 csv 文件)

value1,value2
one,two
three,four
five,six

我的想法是把第一个键和它的值写成如下

value1
one
three
five

然后我在考虑使用 RandomAccessFile 类中的 seek 方法返回到第 1 行并再次写入第二个键及其值。但是我无法完成此任务,因为 seek 函数接受整个文件中的字符串长度并在其后写入新字符串。虽然我希望指针跳转到第一行并附加字符串。有一个更好的方法吗?。一个简单的例子将不胜感激。

谢谢

最佳答案

为什么不能只使用 4 个字符串,每行一个?像这样:

StringBuilder keyRow = new StringBuilder();
StringBuilder value1 = new StringBuilder();
StringBuilder value2 = new StringBuilder();
StringBuilder value3 = new StringBuilder();

Iterator keys = hashmap.keySet().iterator();
boolean notFirst = true;
while(keys.hasNext()) {
String key = (String)keys.next();
ArrayList list = (ArrayList)hashmap.get(key);
if(!notFirst) {
keyRow.append(",");
value1.append(",");
value2.append(",");
value3.append(",");
}
keyRow.append(key);
value1.append((String)list.get(0));
value2.append((String)list.get(1));
value3.append((String)list.get(2));
notFirst = false;
}

然后在最后,只取4个字符串

String csv = keyRow.toString()+"\n"+value1.toString()+"\n"+value2.toString()+"\n"+value3.toString();

请注意,此示例并不是真正合适的 CSV。带逗号的字符串不包含在引号中。


或者,如果您有数千行,您将遍历 HashMap 一千次。为了节省查找键的时间,您可以将它们全部放在 ArrayList 中:

StringBuilder csv = new StringBuilder();
int row = 0;
ArrayList<ArrayList> list = new ArrayList<ArrayList>();

// Write the keys row:
Iterator keys = hashmap.keySet().iterator();
boolean notFirst = true;
while(keys.hasNext()) {
String key = (String)keys.next();
ArrayList tmp = (ArrayList)hashmap.get(key);
if(!notFirst) {
csv.append(",");
}
csv.append(key);
// store list
list.add(tmp);
notFirst = false;
}
csv.append("\n");


// Write the rest of the rows
while(row<numberOfTotalRow) {
notFirst = true;
for(int x=0;x<list.size();x++) {
if(!notFirst) {
csv.append(",");
}
csv.append((String)list.get(x).get(row));
notFirst = false;
}
row++;
}

关于java - 将 hashmap 中的数据写入 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11606376/

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