Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reverse (parse the output) of Arrays.toString(int[]) [duplicate]

Is there in the JDK or Jakarta Commons (or anywhere else) a method that can parse the output of Arrays.toString, at least for integer arrays?

int[] i = fromString(Arrays.toString(new int[] { 1, 2, 3} );
like image 477
Thilo Avatar asked Jan 19 '09 02:01

Thilo


People also ask

What is the reverse of toString in Java?

The short answer is "No". There is no simple way to re-import an Object from a String, since certain type information is lost in the toString() serialization.


2 Answers

Pretty easy to just do it yourself:

public class Test {
  public static void main(String args[]){
    int[] i = fromString(Arrays.toString(new int[] { 1, 2, 3} ));
  }

  private static int[] fromString(String string) {
    String[] strings = string.replace("[", "").replace("]", "").split(", ");
    int result[] = new int[strings.length];
    for (int i = 0; i < result.length; i++) {
      result[i] = Integer.parseInt(strings[i]);
    }
    return result;
  }
}
like image 90
Sam Avatar answered Oct 01 '22 13:10

Sam


A sample with fastjson, a JSON library:

    String s = Arrays.toString(new int[] { 1, 2, 3 });
    Integer[] result = ((JSONArray) JSONArray.parse(s)).toArray(new Integer[] {});

Another sample with guava:

    String s = Arrays.toString(new int[] { 1, 2, 3 });
    Iterable<String> i = Splitter.on(",")
        .trimResults(CharMatcher.WHITESPACE.or(CharMatcher.anyOf("[]"))).split(s);
    Integer[] result = FluentIterable.from(i).transform(Ints.stringConverter())
        .toArray(Integer.class);
like image 38
Anderson Avatar answered Oct 01 '22 13:10

Anderson