0

myStrings という文字列 [] があります。他のものに変換することはできません。文字列配列のままにしておく必要があります。ただし、文字列をもう 1 つ追加する必要があるため、このメソッドを記述しました。これを行うには、より優れた、より高速で、メモリの消費量が少ない方法があると確信していますが、それがわかりません。これを解決する唯一の方法をJava APIで提供できる人はいますか? 私はJava 1.7を使用しています

String[] myStrings;  // this gets set to real values later in program.

public void addToMyStrings(String addMe){
    List<String> list = Arrays.asList( myStrings );
    if( list != null )
    {
        list.add( addMe);
        myStrings = list.toArray( new String[0] );
    }
}
4

3 に答える 3

0

これは悪い設計上の決定です。myStrings を変更する必要がある場合は、最初から動的リストとして宣言する必要があります。

固定境界配列として保持する場合は、インスタンス化時に決して超えないことがわかっているサイズを指定してください。

それができない場合は、ArrayUtils.add(T[] array,T element)
を使用できます 。メソッドは配列をコピーし、最後に項目を追加します。アルゴリズムよりも高速である必要がありますが、それほどではありません。

実際には、ボトルネックが見られない限り、パフォーマンスについて心配する必要はありません。たとえば、配列に 3 ~ 4 個のアイテムが含まれていると予想される場合、現時点ではこれについて心配する必要はありません。時期尚早の最適化は悪です。:)

于 2013-11-01T15:31:03.817 に答える
0

If you absolutely have to use an Array then you could mimic what something like ArrayList does and double its size as needed. That way most inserts are very efficient (O(1)) complexity, but every once in a while you will have to do a full arraycopy of O(n) complexity.

于 2013-11-01T15:16:09.520 に答える