参照:https://blog.csdn.net/weixin_39148512/article/details/79234817
これはよくリスト・コレクションで知られている、私たちはしばしばのArrayListとLinkedListのコレクションを使用していますが、ソースコードを見ることで、あなたはArrayListには、ランダム・インターフェースが、空であるRandomAccessインタフェースを実現するでしょう!ランダム・インタフェースを実現していないリンクされました。
これはなぜでしょうか?
-------------------------------------------------- -------------------------------------------------- -
この達成されるランダム・ArrayListのインターフェースのソースコード
-------------------------------------------------- -------------------------------------------------- -
これは、RandomAccessインタフェースを達成しなかった、LinkedListの源であります
-------------------------------------------------- -------------------------------------------------- -
これは、ソースコードインタフェースであるランダム・
オリジナルRandomAccessインタフェースは、マーカーインターフェイス(マーカー)であるが、このインタフェースを達成するためにどのような影響を持って?
回答:限り、リストのコレクションは、このインタフェースを実装して高速なランダムアクセスをサポートすることができ、誰かがランダムアクセスとは何か、高速、尋ねましたか?役割とは何ですか?
コレクションクラスbinarySearch()メソッドは、以下のソースコードを見て:
リストのランダム・はindexedBinarySerach(リスト、キー)またはiteratorBinarySerach(リスト、キー)メソッド実装されたインタフェースを実装するかどうかを判断し、見ることができます。PS(その役割はクラスまたはインタフェースタイプのオブジェクトかどうかを決定するのinstanceof)
まあ、一部の人々は、これらの2つの方法の実装は違いは何であることを疑いますか?
次indexedBinarySerach(リスト、key)メソッドのソースを表示:
-------------------------------------------------- -------------------------------------------------- ---------
次iteratorBinarySerach(リスト、key)メソッドのソースを表示:
実装するソースコードを表示することによってランダム・インタフェースを反復子を使用して実装されることなく、ループ・トラバーサルのための一般的なインターフェイスを使用してリストのコレクションを発見しました。
次に、我々は次のArrayListとLinkedListのは、これらの2つの方法を使用すると、どのように彼らのパフォーマンスでテストします!
ArrayListのループスルーのために
-------------------------------------------------- -------------------------------------------------- ---------
ArrayListのの反復子を反復
ループ反復するためのLinkedList
-------------------------------------------------- -------------------------------------------------- ---------
LinkedListのの反復子を反復
-------------------------------------------------- -------------------------------------------------- ---------
業績:
上記のデータから分かるように、ループトラバース用のArrayListは、LinkedListのを通ってループよりも速い上イテレータ反復を使用して、イテレータイテレータより速く横断します
だから、我々はプロジェクトを行う際に、考慮に異なるトラバーサルの異なるサブクラスのリストコレクションを取る必要があり、パフォーマンスを向上させることができます!
しかし、それはリストのサブクラスはArrayListのを受けてどのように決定するか、またはLinkedListのがそれである疑いを、発行されましたか?
その後、リストのコレクションランダム・インタフェースのサブクラスを実装するかどうかを判断するためにinstanceofを使用する必要があります!
主な方法:
結果:
概要:存在がより良い代わりのLinkedList ArrayListのかどうかを判断することができるように設定されているランダム・インタフェースバスケットケース、パフォーマンスを向上させるために、より良いナビゲートするためのより良い方法を選択することが可能です!