1

Web サービスから文字列の json 配列を受け取る Android アプリを実装しています。この配列は非常に大きくなる可能性があります (500 を超えるエントリ)。このデータをベクター オブジェクトに解析しています。アプリでは、ユーザーはこのベクターに文字列を追加できますが、文字列はその先頭に追加する必要があります。

今、私はそれを達成するために次のことをしています:

Collections.reverse(myVector);
myVector.add(newString);
Collections.reverse(myVector);

これを行うための他の安価な方法はありますか?

ありがとう

4

5 に答える 5

4

java.util.LinkedList代わりにa を使用できますか? を使用できますaddFirst。これは、双方向にリンクされたリストであるため、より効率的です。

于 2013-04-16T16:46:45.757 に答える
1

インデックスが 1 の Vector.add(index,element) API を使用できないのはなぜですか?

または私は何かが欠けていますか?

于 2013-04-16T16:46:54.193 に答える
1

より高速な方法は、 .add(int, E) ...を使用して、ベクトルの先頭に直接挿入することです。

myVector.add(0, newString);
于 2013-04-16T16:47:47.453 に答える
1

メソッドを使用できますVector#add(index, element)。ただし、要素を毎回下にシフトするコストが発生します。

ただし、コストをできるだけ回避するCollections.reverseには、最初に使用し、それを逆にし、ユーザーが完了するまで文字列を追加できるようにします。最後に追加する (追加する) 場合、既存の要素を邪魔にならないように移動する必要はありません。完了したら、もう一度逆にして正しい順序にします。総反転 -- わずか 2。

于 2013-04-16T16:48:55.757 に答える
0

ベクトルを使用する必要がありますか? ArrayList を使用する場合、前に要素を挿入できます list.add(0, element)

于 2013-04-16T16:49:22.777 に答える