上下文:我已将数组转换为字符串,然后转换为字节,以便将其作为blob存储在数据库中。然后我想要检索数组。我检索blob并从字节中检索字符串。然后我想从字符串中检索数组。
现在我一直在寻找将我的字符串转换回数组的各种选项。我曾经看过使用带有某些正则表达式的string.split()来获取我的数组,然而,这有点复杂,因为它是多维的。但是有一种简单的方法可以将字符串转换回数组,其中字符串仍包含其原始的“数组语法”吗?
e.g。
Array array = {1, 2, 3}
String string = array.toString()
[insert string back to array]
干杯!
P.S。可以将数组存储在数据库(谷歌应用引擎)中而无需这种低效的复杂方法吗?
答案 0 :(得分:1)
您可以将List存储为EmbeddedProperty。
例如,这里有一个我用于满足这些需求的通用实用程序类......
import java.util.ArrayList;
import java.util.List;
import com.google.appengine.api.datastore.EmbeddedEntity;
/**
* Utility class for storing Lists of simple objects
* @author toni.navarro
*
*
*
*/
@SuppressWarnings("unchecked")
public class ListTransformer<T> {
public List<T> toList(List<EmbeddedEntity> embeddedList) {
List<T> list = new ArrayList<T>();
if (embeddedList!=null) {
for (EmbeddedEntity embeddedEntity: embeddedList) {
list.add((T) embeddedEntity.getProperty("value"));
}
}
return list;
}
public List<EmbeddedEntity> toEmbeddedList(List<T> list) {
List<EmbeddedEntity> embeddedList = new ArrayList<EmbeddedEntity>();
if (list!=null) {
for (T item: list) {
EmbeddedEntity embeddedItem = new EmbeddedEntity();
embeddedItem.setUnindexedProperty("value", item);
embeddedList.add(embeddedItem);
}
}
return embeddedList;
}
}
...然后将其用于:
embeddedEntity.setUnindexedProperty("possibleQuestions", new ListTransformer<Long>().toEmbeddedList(turn.getPossibleQuestions()));
......和:
turn.setPossibleQuestions(new ListTransformer<Long>().toList((List<EmbeddedEntity>)embeddedEntity.getProperty("possibleQuestions")));
答案 1 :(得分:0)
为什么要将它存储为blob?将数组转换为字符串:“1,2,3”。然后,在加载时,执行类似:loadedString.split(“,”)的操作并迭代数组(split()方法的结果是String [])并将其添加到您正在使用的Array数据结构中。 / p>
答案 2 :(得分:0)
使用split方法根据给定的分隔符解析字符串并从中返回一个数组。
看看this exmaple:
//split string example
String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates";
String[] splits = asseltClasses.split(":");
System.out.println("splits.size: " + splits.length);
for(String asset: assetClasses){
System.out.println(asset);
}
OutPut
splits.size: 5
Gold
Stocks
Fixed Income
Commodity
Interest Rates
答案 3 :(得分:0)
Convert string into two dimensional string array in Java给出了答案。
特别是:
如果您知道将有多少行和列,您可以预先分配String [] []并使用扫描程序,如下所示:
Scanner sc = new Scanner(data).useDelimiter("[,|]");
final int M = 3;
final int N = 2;
String[][] matrix = new String[M][N];
for (int r = 0; r < M; r++) {
for (int c = 0; c < N; c++) {
matrix[r][c] = sc.next();
}
}
System.out.println(Arrays.deepToString(matrix));
// prints "[[1, apple], [2, ball], [3, cat]]"
答案 4 :(得分:0)
public static void main(String[] args) {
String s = "my name is abc";
StringTokenizer strTokenizer = new StringTokenizer(s);
List<String> arrayList = new ArrayList<String>();
while (strTokenizer.hasMoreTokens()) {
arrayList.add(strTokenizer.nextToken());
}
List<List<String>> lst = new ArrayList<List<String>>();
lst.add(arrayList);
for (int i = 0; i < lst.size(); i++) {
for (int j = 0; j < 1; j++) {
System.out.println("Element " + lst.get(j));
}
}
}