0

私はJavaの初心者であり、他の誰かから提供された区切り記号で区切られたデータを操作する必要があります。そこから、目的のフィールドを既に取得して文字列の配列に格納しています。次のように見えます。

     String [] toseparate =null;
     Vector <String> myVector = new Vector<String>();
     myVector.add (a xyz 12 b efg 13 a pqr 45 c erer 18 a vbv 27 d tag 40 c etc 16....)
    //These values are derived from a separate array which I've parsed based on delimiters.
     toseparate = myVector.toArray(new String[myVector.size()]);

(など)、これは 50 インデックスの範囲の長さの配列であり、並べ替えられていません。結果は次のようになります。

    a,84,b,13,c,34....

(これは、文字列に対応する数字の合計です)。それ以外は、a、b、c ... の順序は関係ありません。多次元配列 (2D) を使用して行うこともできると思いますが、専門家のアドバイスに従ってアプローチを変更します。
それに関して私を助けてください。
どうもありがとう。

4

2 に答える 2

0

split() 関数を使用して区切り文字列を解析してみませんか? 見てみましょう: http://pages.cs.wisc.edu/~hasti/cs302/examples/Parsing/parseString.html

解析方法に関係なく、すべてのデータが最初と最後の値のみが重要なトリプレットになっているように見えます。

a xyz 12 b efg 13 a pqr 45 c erer 18 a vbv 27 d tag 40 c etc...

次のように解決されます。

a 12 b 13 a 45 c 18 a 27 d 40 ...

と仮定すると、配列を 3 回ループして、値を累積することができます。擬似コード:

for( i = 0; i < array.length(); i+=3) {
    if(!map.containsKey( array[i] )) map.put( array[i], array[i+2] );
    else map.put( array[i], map.get( array[i] ) + array[i+2] );
}

マップには、Hashmap<String,int> を使用できると思います。

于 2013-08-30T04:56:45.563 に答える