What is the reverse of (ArrayList).toString for a Java ArrayList?

允我心安 提交于 2019-12-10 13:45:51

问题


I am using the toString method of ArrayList to store ArrayList data into a String. My question is, how do I go the other way? Is there an existing method that will parse the data in the String instance back into an ArrayList?


回答1:


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.

However, for specific formats, and specific (known) types, you should be able to write code to parse a String manually:

// Takes Strings like "[a, b, c]"
public List parse(String s) {
  List output = new ArrayList();
  String listString = s.substring(1, s.length() - 1); // chop off brackets
  for (String token : new StringTokenizer(listString, ",")) {
    output.add(token.trim());
  }
  return output;
}

Reconstituting objects from their serialized form is generally called deserialization




回答2:


Here's a similar question:

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

It depends on what you're storing in the ArrayList, and whether or not those objects are easily reconstructed from their String representations.




回答3:


I would recommend using some standard format with a library for it instead.

JSON is probably the closest syntactically.

Alternatively some XML or serialization based solution could work too. It all depends on your needs of course.




回答4:


What does the ArrayList consist of? As others said, it may be impossible in certain cases, but quite possible and guaranteed to work if:

  • each string representation of element of the array can be identified unambiguously (as it can be for example if the ArrayList consists of Integers)

  • there is a way to create an object of original type from its String representation. I find it most elegant to do this using a static method fromString

Of course, this mimics the whole (de)serialization framework.




回答5:


Apache Commons ftw.

Arrays.asList(StringUtils.split(StringUtils.substringBetween("[1, 2, 3]", "[", "]"), ", "))


来源:https://stackoverflow.com/questions/1518528/what-is-the-reverse-of-arraylist-tostring-for-a-java-arraylist

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!