public class Mass_Reading
{
public static void main(String args[]) throws Exception
{
CSVReader reader = new CSVReader(new FileReader("Test_Graphs.csv"));
List myEntries = reader.readAll();
//System.out.println(myEntries);
myEntries = new ArrayList<String>(myEntries);
//System.out.println(myEntries);
Object[] data = myEntries.toArray();
System.out.println(data[0] + "");
}
}
我正在尝试读取.csv文件并将数据转换为可行的数据类型。读入时它作为字符串对象列表开始。在上面的代码中,我尝试将其添加到字符串数组中。我的主要问题是将String对象变为String Literal。我一直得到错误java.lang.Object []无法转换为java.lang.String []。上面的代码编译,但仍然没有实现我的目标。当它打印时,我仍然得到一个String对象。感谢您的任何建议。
答案 0 :(得分:5)
使用此代码:
String[] data = myEntries.toArray(new String[myEntries.size()]);
您调用的方法myEntries.toArray()
始终返回Object[]
,无法转换为String[]
。
但是我在上面的例子中调用了一个重载方法,你可以在其中传入正确类型的数组作为参数。如果toArray()
方法的大小足够,则String[] data = myEntries.toArray(new String[0]);
方法将填充传入的数组。
如果它的大小不够,它将创建一个正确类型的新数组(与传入的参数类型相同)
因此,你也可以写:
@RequestMapping(value = "/log/delete", method = RequestMethod.POST, params = "delete")
public String deleteLogs(@ModelAttribute("deleteForm") logDeleteForm deleteForm) {
List<Long> formIds = deleteForm.getLogIds();
if (formIds == null || formIds.size() == 0) {
return "redirect:/projects/log";
}
for (Long id : formIds) {
logService.deleteLog(id);
}
return "redirect:/projects/log";
}
有些人更喜欢这样,但我不喜欢这会产生一个浪费的对象,尽管在实际的应用程序中,这不会对性能产生影响。