6

Javaでの並列配列の実際のユースケースはありますか?相互に関連するN個の配列を維持するのは面倒すぎるようです。

例:

int  ages[]   = {0,          17,        2,          52,         25};
String names[] = {"None",    "Mike",    "Billy",    "Tom",      "Stan"};
int  parent[] = {0,          3,         1,          0,          3};

クラスPersonを作成し、オブジェクトを1つの配列に格納するだけです。もう少し高価になりますが、はるかに使いやすいですよね?

4

4 に答える 4

12

Java での並列配列の唯一の本当の利点は、オブジェクトの割り当てやヒープの使用量を減らすための (IMO 極端な) 手段です。オブジェクトの十分な大きさのコレクションの場合、カスタム クラスのインスタンスの 1 つの配列よりも 3 つの配列の方が占めるスペースが少なく、使用するオブジェクトも少なくなります。

このアプローチは、コードをより脆弱にするため、通常は悪い考えです。ほとんどの場合、カスタム クラスを作成して使用するのが最善の方法です。

注: Androidのパフォーマンスのヒントでは別のアドバイスをしていますが、これらのヒントは主に、ユーザー エクスペリエンスに対する GC の一時停止の頻度/影響を減らすことに焦点を当てています。そして、そのアドバイスでさえ、いくつかの点で警告されています.

于 2011-03-18T03:42:33.067 に答える
11

並列配列は、配列以外のデータ構造を持たないBasic(元の言語)のような言語からの引き継ぎです。代わりに、提案どおりにオブジェクトを定義する必要があります。

于 2011-03-18T02:19:36.223 に答える
1

クラス/オブジェクト表現を作成するのは、表現しようとしているものがオブジェクトとしてより適切に説明できる場合のみです。

ハッシュマップは別のソリューションです。たとえば、年齢と名前の異なる配列の代わりに、名前が一意である場合は、名前をキーとして使用し、年齢を値として使用できます。

于 2011-03-18T02:24:39.173 に答える
1

クラスの方が優れていますが、ユース ケースが狭い場合 (メソッド本体が 1 つなど)、作成するのは無駄です。ペアクラスがある場合は、新しいクラスを作成せずに目的に合わせて特化できます。

于 2011-03-18T03:12:59.200 に答える