0

InetAddress.getAllByName(host);以以下格式返回我的数组

www.google.com/74.233.233.22
www.google.com/74.233.233.21
www.google.com/74.233.233.23  

我将上述结果转换为字符串并存储在 Android Shared Preference 中

String all = inetAddress[i].toString();

现在,当我从首选项中检索回来时,它会返回我String,这很明显,但我希望它采用数组格式,例如inetAddress[i].

www.google.com/74.233.233.22 
www.google.com/74.233.233.21
www.google.com/74.233.233.23  

我怎样才能做到这一点?

4

2 回答 2

0

我只建议这样做,因为您正在保存网络操作的结果。显然这很慢,你不想继续重复它。

Java 数组是实现 Serializable 的对象。将数组写入文件然后稍后将其从文件中解组是非常简单的。然后,您的 Preference 将是一个字符串,其中包含数据序列化的文件的名称。

在此处查看代码的答案:

Android - 具有可序列化对象的 SharedPreferences

于 2013-10-13T18:24:28.000 回答
0

您可以使用从字符串创建 InetAddressInetAddress.getByName("yourstring")

循环遍历您的字符串并将它们转换为 InetAddresses -

String[] addresses = getStringArrayOfAddresses();
InetAddress[] inets = new InetAddress[addresses.length];
for ( int i = 0; i < addresses.length; i++ ) {
    inets[i] = InetAddress.getByName(addresses[i]);
}

如果您的字符串是一个长字符串,您可以使用split()String 方法拆分此字符串。

String addresses = "www.google.com/74.233.233.22 www.google.com/74.233.233.21";
String[] addrSplit = addresses.split(" ");
System.out.println(addrSplit[0]); // will give www.google.com/74.233.233.22 
于 2013-02-18T10:38:39.843 回答