java中,有一个非String的对象集合调用了toString()方法生成了一个字符串变量,怎么将这个字符串怎么转成原集合
时间: 2023-12-14 20:37:10 浏览: 30
如果你想将一个字符串转换回原对象集合,那么需要使用反序列化技术,即将字符串还原成原来的对象集合。在Java中,可以使用Java自带的序列化机制来实现反序列化。
具体步骤如下:
1. 将字符串转换成字节数组。
```java
byte[] bytes = str.getBytes();
```
2. 创建一个ObjectInputStream对象,并将字节数组作为输入流。
```java
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
```
3. 调用ObjectInputStream的readObject()方法读取对象集合。
```java
Object obj = ois.readObject();
```
4. 将读取到的对象集合强制转换成原类型。
```java
List<MyObject> list = (List<MyObject>) obj;
```
注意:在进行反序列化时,原对象集合的类必须实现Serializable接口,否则将抛出NotSerializableException异常。
相关问题
java中,有一个对象集合调用了toString()方法生成了一个字符串变量,怎么将这个字符串怎么转成原集合
Java中可以使用反序列化来将字符串转换成原集合对象。首先,需要先将字符串反序列化为一个字节数组,然后再将字节数组反序列化为原集合对象。
以下是一个示例代码:
```java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
// 调用集合的 toString() 方法生成字符串
String str = list.toString();
// 将字符串反序列化为字节数组
byte[] bytes = str.getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
// 将字节数组反序列化为原集合对象
ObjectInputStream ois = new ObjectInputStream(bis);
List<String> newList = (List<String>)ois.readObject();
System.out.println(newList);
}
}
```
运行结果:
```
[Hello, World]
```
用java语言写一个从字符串String中提取数字的方法,用正则式
可以使用 Java 中的正则表达式来提取字符串中的数字。以下是一个示例方法:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractNumbersFromString {
public static void main(String[] args) {
String str = "abc123def456";
String numbers = extractNumbers(str);
System.out.println(numbers); // 输出:123456
}
public static String extractNumbers(String str) {
String regex = "\\d+"; // 匹配一个或多个数字
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
sb.append(matcher.group());
}
return sb.toString();
}
}
```
这个方法的主要思路是使用正则表达式匹配字符串中的数字,然后将它们连接成一个新的字符串返回。在这个示例中,我们使用了 `\d+` 来匹配一个或多个数字。然后我们使用 `Pattern` 类来编译这个正则表达式,并使用 `Matcher` 类来查找匹配项。最后,我们将所有的匹配项连接到一个新的字符串中,并返回它。