2017-11-06 15 views
-3

最近、私はプロジェクトのためにEclipseでBukkit Minecraftプラグインを作っています。私はプレーヤーのオブジェクトを格納するためにarraylistを使っています。コードを最適化しようとすると、Java Collectionを使ってオブジェクトのListを定義する別の方法があることに気付きました。今では基本的なことはありますが、コレクションはarraylistとは異なり、インデックスに基づいて変数を参照することはできませんが、私のコードでは使用していないので、CPUに関する他の利点またはメモリ使用量? 注*変数をCollectionとして渡すことで、他の形式のリストにキャストする方が簡単ですが、私は自分のコードでこれをやっていないと確信しています。利点。CollectionListとArrayListのCPUとメモリ使用量には違いがありますか?

+2

'ArrayList'は、メモリ使用量の点で最も効率的なコレクションの1つです(基本的には参照配列です)。 - 何かに切り替えるときに、その点で何を期待しているのか分かりません。 – assylias

+0

この全体的な質問は基本的な誤解に基づいています。 'Collection'はクラスではなく、インタフェースであり、' Collection'のCPUとメモリの性能については何の意味もありません。 JavaチュートリアルやJavaの教科書を読んでおくことをお勧めします。長期的には時間を節約できます。 –

答えて

2

Collectionはクラスではなく、インターフェイスです。すなわち、実際にはdo何もしません。利用可能なメソッドを定義するだけです。実際、ArrayListCollectionインターフェイスをサポートしています。

ArrayList<Integer> list = new ArrayList<>(); 

しかし、あなたは次のことを行うことができます、そして、彼らは機能的に同じです::だから、あなたはこれを行うことができ、あなたが今ArrayListを参照しているため、後者の例では、

Collection<Integer> list = new ArrayList<>(); 

しかし、 CollectionとしてCollectionのメソッドにしかアクセスすることはできません。発見したとおり、ArrayListよりもはるかに制限されています。

ArrayList

も、それ自体がCollectionを拡張Listインターフェースを、サポートしており、追加のリストのメソッドを提供し、あなたはこれを行うことができます(これは一般的に推奨されます):

List<Integer> list = new ArrayList<>(); 

のでCollectionArrayListのパフォーマンス本当に有効な質問ではありません。私があなたと思うものは、異なるList実装の比較パフォーマンスです。が知りたいです。 Javaの主なシングルスレッド実装は、ArrayListLinkedListです。これらは次のように作成されます:

List<Integer> arrayList = new ArrayList<>(); 
List<Integer> linkedList = new LinkedList<>(); 

それぞれの長所と短所があります。例えば、:When to use LinkedList over ArrayList?

関連する問題