在Java中将string数组转换为string

我想要将Java代码转换为一个string数组。

如果你只是想要一个数组的“debugging风格”转储:

 String str = Arrays.toString(arr); 

或者,为了更多的控制(在Java 8之前):

 StringBuilder builder = new StringBuilder(); for(String s : arr) { builder.append(s); } String str = builder.toString(); 

(Java 8及以上):

 String str = String.join(",", arr); 

您可以根据string(如果有)在string之间需要修改上述内容。

您可能会看到与Java 8以前的代码几乎完全相同的代码,但是使用StringBufferStringBuilder是一个不是线程安全的新类,但因此在单个线程中具有更好的性能,因为它消除了不必要的同步。 总之,在99%的情况下,你最好使用StringBuilder – function明智,两者是相同的。

不要使用一个string,只需用+来追加它即可,就像这里显示的一些答案一样。 这将通过屋顶发送GC,因为您正在创build并抛出尽可能多的string对象,因为您在数组中有项目。 对于小型arrays,您可能没有真正注意到其中的差异,但是对于大型arrays,速度可能要慢几个数量级。

使用Apache commons StringUtils.join() 。 它接受一个数组作为参数(并且对IterableIterator参数也有重载),并在每个元素(如果不是null)上调用toString() )来获取每个元素的string表示forms。 如果指定了一个元素,那么每个元素string表示forms将被连接成一个带有分隔符的string:

 String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-"); System.out.println(joinedString); 

生产:

 ab-1 

我喜欢使用谷歌的Guava Joiner ,例如:

 Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione"); 

会产生相同的string:

 new String("Harry, Ron, Hermione"); 

ETA:Java 8现在有类似的支持:

 String.join(", ", "Harry", "Ron", "Hermione"); 

无法看到跳过空值的支持,但这很容易解决。

你可以这样做,给定一个原始types的数组:

 StringBuffer result = new StringBuffer(); for (int i = 0; i < a.length; i++) { result.append( a[i] ); //result.append( optional separator ); } String mynewstring = result.toString(); 

尝试Arrays.deepToString方法。

返回指定数组的“深层内容”的string表示forms。 如果数组包含其他数组作为元素,则string表示forms包含其内容等等。 此方法用于将multidimensional array转换为string

从Java 8开始,我认为最简单的方法是:

  String[] array = { "cat", "mouse" }; String delimiter = ""; String result = String.join(delimiter, array); 

这样你可以select一个任意的分隔符。

尝试Arrays.toString重载的方法。

否则,请尝试下面的通用实现:

 public static void main(String... args) throws Exception { String[] array = {"ABC", "XYZ", "PQR"}; System.out.println(new Test().join(array, ", ")); } public <T> String join(T[] array, String cement) { StringBuilder builder = new StringBuilder(); if(array == null || array.length == 0) { return null; } for (T t : array) { builder.append(t).append(cement); } builder.delete(builder.length() - cement.length(), builder.length()); return builder.toString(); } 

以下是数组到string转换的示例。

    公共类ArrayToString
     { 
public static void main(String [] args) { String [] strArray = new String [] {“Java”,“PHP”,“.NET”,“PERL”,“C”,“COBOL”};

  String newString = Arrays.toString(strArray); newString = newString.substring(1, newString.length()-1); System.out.println("New New String: " + newString); } } 

你想要从arrayList中产生string的代码,

 Iterate through all elements in list and add it to your String result 

你可以通过两种方式来做到这一点:使用String作为结果或使用StringBuffer / StringBuilder。

例:

 String result = ""; for (String s : list) { result += s; } 

…但由于性能原因这不是好的做法。 更好的方法是使用StringBuffer (线程安全)或StringBuilder ,它们更适合添加string

 String[] strings = new String[25000]; for (int i = 0; i < 25000; i++) strings[i] = '1234567'; String result; result = ""; for (String s : strings) result += s; //linear +: 5s result = ""; for (String s : strings) result = result.concat(s); //linear .concat: 2.5s result = String.join("", strings); //Java 8 .join: 3ms Public String join(String delimiter, String[] s) { int ls = s.length; switch (ls) { case 0: return ""; case 1: return s[0]; case 2: return s[0].concat(delimiter).concat(s[1]); default: int l1 = ls / 2; String[] s1 = Arrays.copyOfRange(s, 0, l1); String[] s2 = Arrays.copyOfRange(s, l1, ls); return join(delimiter, s1).concat(delimiter).concat(join(delimiter, s2)); } } result = join("", strings); // Divide&Conquer join: 7ms 

如果你没有select,但要使用Java 6或7,那么你应该使用Divide&Conquer连接。

 String array[]={"one","two"}; String s=""; for(int i=0;i<array.length;i++) { s=s+array[i]; } System.out.print(s); 
  String[] strings = {"a","b","c"}; List<String> list= new ArrayList<String>(Arrays.asList(strings)); 

如果你知道数组有多less元素,一个简单的方法就是这样做:

 String appendedString = "" + array[0] + "" + array[1] + "" + array[2] + "" + array[3];