配列リストに10個のスロットがあるかどうかを知る必要があります。サイズを呼び出す方が速い関数ですか、それとも10番目のインデックスの場合と同じですか?また、特定の機能の速度を確認する方法はありますか?phpMyAdminがクエリの実行にかかる時間を表示する方法のようなものです。
if(strideList.size() == 10)
{
}
また
if(strideList.get(9) != null)
{
}
配列リストに10個のスロットがあるかどうかを知る必要があります。サイズを呼び出す方が速い関数ですか、それとも10番目のインデックスの場合と同じですか?また、特定の機能の速度を確認する方法はありますか?phpMyAdminがクエリの実行にかかる時間を表示する方法のようなものです。
if(strideList.size() == 10)
{
}
また
if(strideList.get(9) != null)
{
}
list.size()
それはあなたの意図を明確に示しているので、あなたは使うべきです。リストに20個の要素がある場合、他のコードは実際には間違っていますか?strideList.get(9) != null
9番目の要素が。と異なるかどうかをチェックするだけですnull
。
関数の速度のチェックについては、タイマーを使用して関数の最初から最後までの経過時間を計算したり、プロファイラーと呼ばれる特別なソフトウェアを使用して、アプリケーションでどの関数/コードパスが遅いかを確認したりできます。
ArrayList.java
ソースに基づいて(他のList
実装も同様になります)、オブジェクトからメンバー変数をsize()
返すだけです。ただし、範囲チェックを実行し、オーバーヘッドの3つまたは4つの機能を実行してから、さらに多くの処理能力を必要とする配列アクセスを実行します。int
get()
を使用しsize()
ます。
(さらに、@BarışUşaklıが言ったように、それはより読みやすくなりsize()
ます。)
strideList.get(9)はをスローし、IndexOutOfBoundsException
よりも時間がかかります。list.size()
ただし、注意すべき点はのコードですget(int index)
。関係する2つのステップがあります1.size()
範囲がサイズよりも大きい場合は例外をスローします。これは追加の時間がかかります。3。サイズがサイズよりも大きくない場合は、配列から取得します。ArrayListのコード:
public E get(int index) {
382 rangeCheck(index);
383
384 return elementData(index);
385 }
private void rangeCheck(int index) {
603 if (index >= size)
604 throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
605 }
606
E elementData(int index) {
371 return (E) elementData[index];
372 }
373