0

私は現在、値のコレクションをハッシュマップから文字列として格納する別のクラスに渡すプログラムを持っています。文字列に保存される情報は次のとおりです。

Station 1=[1, Task 1, 10, false, 0, java.awt.Color[r=255,g=0,b=0]]
Station 2=[2, Task 2, 10, false, 0, java.awt.Color[r=0,g=0,b=255]]
Station 3=[3, Task 3, 10, false, 0, java.awt.Color[r=0,g=255,b=0]]
Station 4=[4, Task 4, 10, false, 0, java.awt.Color[r=255,g=200,b=0]]
Station 5=[5, Task 5, 10, false, 0, java.awt.Color[r=0,g=0,b=0]]

そして私はそれらを(fe)に分割しようとしています:

Station 1
1
Task 1
10
false
0
java.awt.Color[r=255,g=0,b=0]

私は最初に各文字列を分割しようとしましたが、色の値が設定されている文字列の最後の部分に「=」と「」があるため、すべてが台無しになります。

StringTokenizer()も試しましたが、最後の部分でも問題が発生します。

必要に応じてこれらの文字列を分割するためのより簡単で効果的な方法はありますか?どんな提案でも大歓迎です!

よろしくお願いします。コードが必要な場合はお知らせください。

編集:

ハッシュマップから引数を正しく渡すことで、特定の問題を修正しました。

public MultiMap stationmap = new MultiHashMap( );

public Collection getkeyValues(String s) {
   Collection values = (Collection) stationmap.get(s);
   return values;
}

このようにして、このコレクションを必要なクラスに渡すことができ、さらにそれを繰り返し処理して、キーの値を取得できます。

さらなる回答が同様の文字列の問題を持つ人々を助けるかもしれないので、私はこれを開いたままにしておきます!

4

3 に答える 3

1

文字列のフォーマットを制御している場合は、それらをjsonにフォーマットして、そこで解析を使用できます。

于 2012-08-09T03:10:08.977 に答える
1

Google のライブラリguavaを使用する:

public static List<String> convertToList(String str) {
    List<String> list = Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
    /**
     Returns:
            Station 1
            1
            Task 1
            10
            false
            0
            java.awt.Color[r=255,g=0,b=0]]
             */


    int lastIndex = list.size() - 1;
    String last = list.get(lastIndex);
    String amendedValue = last.substring(0, last.length()-1);
    list.set(lastIndex, amendedValue);
    // Convert the last element "java.awt.Color[r=255,g=0,b=0]]" to  "java.awt.Color[r=255,g=0,b=0]"


    return list;
}

または:

public static List<String> convertToList2(String str) {
    str = str.substring(0, str.length()-1);
    return Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
}
于 2012-08-09T03:39:57.920 に答える