問題タブ [stringbuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ストリームバッファ実装の std::endl と '\n' の違い
現在、stringbuf のサブクラスを実装して、バッファーが特定の文字 (私の場合は '\n') をトークン化し、この文字が発生した場合にアクションを実行できるようにしようとしています (メッセージをロガーにダンプし、後でバッファーをクリアします)場合)。この目標を達成するために、sputc ('\n' に注意する機能を実装するため) と xsputn (実際に sputc を使用するため、GCC 実装はデフォルトでこれを行うようには見えないため) をオーバーライドしました。デバッグの目的で、sputc に渡された各文字を stdout に書き出すようにしました。
これが私の質問です。次のようなものを使用する場合
sputc は、std::endl によって導入される必要がある '\n' を除く各文字を受け取るため、'\n' が渡されないため、期待されるアクションは実行されません。次のようなものを使用すると
あるいは
すべてが期待どおりに機能し、私の sputc 実装は '\n' 文字を取得します。
したがって、私の質問は次のとおりです。両方のコード行が背後のstringbufに関してまったく同じことを行うべきではありませんか?そうでない場合、「\ n」を取得するためにオーバーライドする必要がある他のメソッドはどれですか?
java - StringBufferは廃止されましたか?
「EffectiveJava」という本の中で、JoshBlochは次のように述べています。
StringBufferはほとんど廃止されており、同期されていない実装「StringBuilder」に置き換える必要があります
。
しかし、私の経験では、StringBufferクラスが広く使用されているのを見てきました。StringBufferクラスが廃止されたのはなぜですか。また、非同期によるパフォーマンスの向上を除いて、StringBuilderをStringBufferよりも優先する必要があるのはなぜですか。
java - Java StringBuffer での deleteCharAt() の使用は何ですか?
私たちはすでに持っていdelete()
ますStringBuffer
。なぜ必要なのdeleteCharAt()
ですか?deleteCharAt(n)
同じことをしませんdelete(n, n+1)
か?
java - 文字列連結での「+」の使用は効率に影響しますか?
JavaでString、StringBuilder、およびStringBufferを使用しました。
効率の観点から考えていたときに、この質問を考えました。
文字列連結での「+」の使用は効率に影響しますか?
java - ParseInt は、StringBuffer の数値出力を読み取るときに例外を発生させます
私のアプリケーションは、常に 0 ~ 3 桁の数字であるコマンド ライン プログラムの出力を読み取ります。データは stringBuffer として開始され、.toString に送信されます。3 番目のステップは、比較のためにそれを整数に変換することです。Integer.parseInt を使用する最後のステップでは、java.lang.NumberFormatException が発生します。たとえば、コマンド ライン プログラムの出力が「0」の場合、これは例外です。
「0」付近の改行に注目してください。変換が難しい場合があることはわかっています。文字セットを確認し、明示的に UTF-8 に設定しました。また、変換前にこのコードを使用して「\ n」またはその他の非数値文字をチェックしようとしました:
このコードでは、障害を十分に明らかにできない場合があります。ただし、プログラムを整数変換せずに実行したままにしておくと、個々の数字はそれ自体として出力され、複数桁の数値はそれぞれ、余分な文字なしで各行に数字とともに出力されます。
目に見えない余分な文字に加えて、関連するデータを変換しようとしていることは確かです。
- これらの目に見えない文字が何であるかを理解するにはどうすればよいですか?
- それらを取り除き、サブプロセスの数値出力のみの整数表現を取得する最良の方法は何ですか?
参考:サブプロセス呼び出しのコード:
そしてキックのために、例外を発生させる ParseInt 関数:
前もって感謝します。
java - Java での StringBuffer/StringBuilder のサイズ
全て、
StringBuffer
/オブジェクトのサイズを 2^{1...n} のサイズに初期化することが推奨されるのはなぜですかStringBuilder
(ただし、通常は > 64 になります)。そうすることで、どのような利点/最適化が達成されるでしょうか?
java - この単純なコードの複雑さはどのくらいですか?
私が持っている電子ブックからこのテキストを貼り付けています。O(n 2 )の場合の複雑さを示し、その説明も提供しますが、その方法がわかりません。
質問: このコードの実行時間は?
本が与えた答え:
O(n 2 )、ここで n は文の文字数です。理由は次のとおりです。文に文字列を追加するたびに、文のコピーを作成し、文のすべての文字を実行してコピーします。ループ内で毎回最大 n 文字まで反復する必要がある場合、少なくとも n 回ループすると、O(n 2 ) の実行時間が得られます。痛い!
誰かがこの答えをもっと明確に説明できますか?
java - より効率的なStringBuffernew()またはdelete(0、sb.length())は何ですか?
オブジェクトの作成(特にループ内)を回避することは良い習慣と見なされるとよく言われます。
それでは、何が最も効率的StringBuffer
ですか?
つまり、オブジェクトの作成は配列をループするよりも高速であると主張することができます。
java - デフォルト値としてゼロを使用して整数値から StringBuffer に変換する
初期値が 00000 の StringBuffer を作成しようとしています。
私の問題は、初期値が整数変数に依存し、整数変数の値に基づいて、StringBufferに多数のゼロが存在する必要があることです..
たとえば、int length=9 の場合、StringBuffer は 000000000....(9 個のゼロ)... で形成されます。
私はこの問題から抜け出す方法を得ていません。誰でもこれについて私を案内してもらえますか。
私が考え出した1つの方法は、整数値を取得し、その多くの値をString配列に格納してから、String配列をStringBufferに書き込むことですが、非常に非効率的な方法のようです. 私を案内してください。