4

このチュートリアルが次の説明を参照するときの意味を知りたいです。特に太字で強調した部分。

入れる

addfirstメソッドとメソッドは、インスタンスのofferFirst先頭に要素を挿入します。Dequeインスタンスの最後にメソッドaddLastofferLast要素を挿入しDequeます。インスタンスの容量 Dequeが制限されている場合、推奨されるメソッドはofferFirstand です。これは、インスタンスがいっぱいの場合に例外をスローできない可能性があるofferLastためです。addFirst

  1. offerFirst が好まれるのはなぜですか?
  2. addFirst がいっぱいの場合に例外をスローできないのはなぜですか? そのような状況で例外をスローすることが保証されている方がよいのではないでしょうか?
4

5 に答える 5

1

どちらの方法も正当だと思います (ただし、offerXXX メソッドは境界付きデキューで使用される可能性が高くなります)。

コードがキューに使用可能なスペースがあると想定しており、この想定がコードの正確性にとって重要である場合は、addFirst/addLast を使用します。スローされる実行時例外 (IllegalStateException) は、このバグ シナリオに完全に適しています。

一方、満杯のキューが通常のシナリオである場合は、例外を使用して対処しないでください。offerFirst/offerLast を使用し、戻り値を確認します。

于 2013-03-26T14:36:52.050 に答える
0

両端キューが容量に達するリスクがある場合は、OfferFirst が推奨される方法です。容量に達した場合、addFirst は例外をスローします。offerFirst はブール値 (true/false) を返し、追加が成功したかどうかを示します。offerFirst 容量制限に違反しない限り、指定された要素をこの両端キューの先頭に挿入します。容量が制限された両端キューを使用する場合、このメソッドは通常、例外をスローすることによってのみ要素の挿入に失敗する可能性がある addFirst(E) メソッドよりも適しています。

于 2013-03-26T14:42:51.193 に答える
0

制限付きバージョンを使用する場合、要素の追加が失敗したときに例外をスローしたくないのはなぜでしょう。これは、いくつかの失敗が予想されるため、追加を主張するのではなく、追加を提案しているためです。

于 2013-03-26T14:43:27.237 に答える
0

これは、offerXXXメソッドが を返しboolean、メソッドが返さaddXXXないことを意味します。

したがってofferXXX、いずれかのメソッドから例外がスローされることを期待するのではなく、ブール値を使用して成功を確認することをお勧めします。

とても言い方が悪いです。Javadoc も同様です。

于 2013-03-26T15:01:59.007 に答える
-1

ドキュメントによると:

最初のオファー:

Inserts the specified element at the front of this deque unless it would violate capacity restrictions. When using a capacity-restricted deque, this method is generally preferable to the addFirst(E) method, which can fail to insert an element only by throwing an exception.

つまり、容量が制限された両端キューで addFirst を使用すると、例外がスローされる可能性がありますが、offerFirst を使用しても例外はスローされません。

オファーラスト

Inserts the specified element at the end of this deque unless it would violate capacity restrictions. When using a capacity-restricted deque, this method is generally preferable to the addLast(E) method, which can fail to insert an element only by throwing an exception.

同様に、容量が制限された両端キューで addLast を使用すると、例外がスローされる場合がありますが、offerLast を使用しても例外はスローされません。

于 2013-03-26T14:34:22.627 に答える