0

コンテキスト: 配列を文字列に変換し、次にバイトに変換して、データベースに blob として格納できるようにしました。次に、配列を取得したいと思います。ブロブを取得し、バイトから文字列を取得します。次に、文字列から配列を取得したいと思います。

今、文字列を配列に変換するためのさまざまなオプションを検討していました。string.split() を特定の正規表現で使用して配列を取得することを見てきましたが、これは多次元であるため少し複雑になります。ただし、文字列に元の「配列構文」が含まれている場合に、文字列を配列に変換する簡単な方法はありますか?

例えば

Array array = {1, 2, 3}
String string = array.toString()
[insert string back to array]

乾杯!

ps この非効率な複雑な方法を必要とせずに、配列をデータベース (Google アプリ エンジン) に格納できますか?

4

5 に答える 5

1

リストを 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")));
于 2013-05-13T14:05:36.033 に答える
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));
        }
    }
}
于 2013-05-14T11:09:50.417 に答える