替换 <String, String[]> TreeMap 中的空值
Replace Null Values in <String, String[]> TreeMap
我有以下形式的树图:< String, String[] >
我的 String[] 中有一些值为 null。使用以下代码将我的结果写入文件时,我得到:
java.lang.NullPointerException
我当前写入文件的代码如下,我正在尝试用空字符串替换空值。
new File(outFolder).mkdir();
File dir = new File(outFolder);
//get the file we're writing to
File outFile = new File(dir, "javaoutput.txt");
//create a writer
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"))) {
for (Map.Entry<String, String[]> entry : allResults.entrySet()) {
writer.write(entry.getKey() + " "+ Arrays.toString(entry.getValue()).replace(null, ""));
writer.newLine();
}
有什么想法吗?
您的问题源于此方法调用:replace(null,"");
检查 replace()
的执行情况
它采用的第一个参数是 CharSequence
,它对这个字符序列所做的第一件事就是对其调用 toString()
。
每次都会抛出 NullPointerException
。
Arrays.toString()
但是会将 null
值替换为 "null"
因此将您的调用更改为:replace("null", "");
我有以下形式的树图:< String, String[] >
我的 String[] 中有一些值为 null。使用以下代码将我的结果写入文件时,我得到:
java.lang.NullPointerException
我当前写入文件的代码如下,我正在尝试用空字符串替换空值。
new File(outFolder).mkdir();
File dir = new File(outFolder);
//get the file we're writing to
File outFile = new File(dir, "javaoutput.txt");
//create a writer
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"))) {
for (Map.Entry<String, String[]> entry : allResults.entrySet()) {
writer.write(entry.getKey() + " "+ Arrays.toString(entry.getValue()).replace(null, ""));
writer.newLine();
}
有什么想法吗?
您的问题源于此方法调用:replace(null,"");
检查 replace()
它采用的第一个参数是 CharSequence
,它对这个字符序列所做的第一件事就是对其调用 toString()
。
每次都会抛出 NullPointerException
。
Arrays.toString()
但是会将 null
值替换为 "null"
因此将您的调用更改为:replace("null", "");