用于将Array转换为CSV的Java API

假设我有一个int,float,string等数组。是否有任何实用程序API(例如Commons,Guava)会给我一个逗号分隔的字符串?

像这样,

int[] a = {1,2,3,4,5}. String s = magicAPI.getCSV(a); // s == "1,2,3,4,5"; 

我过去曾经使用过OpenCSV 。

 StringWriter stringWriter = new StringWriter(); int[] a = {1,2,3,4,5}; String[] b = new String[a.length]; for ( int i = 0; i < a.length; i++) { b[i] = a[i]; } CSVWriter csvWriter = new CSVWriter(stringWriter, ","); csvWriter.writeNext(b); 

但是,对于这样一个简单的例子,您可能只想使用StringBuilderfor循环

对于这个简单的用例,您可以使用逗号简单地连接字符串。 如果您使用Java 8:

 String csv = String.join(",", yourArray); 

commons-lang有一个join()方法:

 String csv = org.apache.commons.lang3.StringUtils.join(yourArray, ","); 

你提到Google Guava ,它有这个Joiner实用程序:

 String s = Joiner.on(",").join(a); 

在挖掘了更多之后,我在Spring中找到了http://static.springsource.org/spring/docs/1.1.5/api/org/springframework/util/StringUtils.html StringUtils API。 既然,我已经在使用Spring了,我想我会坚持下去。

Commons Apache CSV似乎整合了3个其他CSV库,尽管我在2007年之后找不到发布。

快速浏览表明OpenCSV将通过CSVWriter执行您想要的CSVWriter

  CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t'); // feed in your array (or convert your data to an array) String[] entries = "first#second#third".split("#"); 

我创建了一个新的方法,而不是去openCSV

 public String convertArrayToCsv(String[] IncomingArray) { StringBuilder sb=new StringBuilder(); for (int i=0;i 

如果将数组转换为Eclipse Collections原始容器,则可以使用makeString()方法之一。 如果未传入separator参数,则默认为“,”(逗号和空格)。

 int[] array = {1,2,3,4,5}; IntList intList = IntLists.mutable.with(array); String s1 = intList.makeString(","); System.out.println(s1); // "1,2,3,4,5" String s2 = intList.makeString(); System.out.println(s2); // "1, 2, 3, 4, 5" 

注意:我是Eclipse Collections的提交者