Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java ArrayList をマスターする:効率的なデータ処理のための包括的なガイド

ArrayList は Java のトレンドトピックです。標準のアレイよりも多くの利点が得られます。 ArrayList を使用すると、オブジェクトを効率的に連続して格納し、不要な場合は削除できます。また、並べ替えや検索など、リストに対して標準的な操作を実行するのにも役立ちます。標準の配列を使用する場合は、これらの操作用に独自のロジックを作成する必要があり、追加の時間と注意が必要になります。

ArrayList には数多くの利点があるため、さまざまな場合に応用できます。ただし、ArrayList に組み込まれていない重要な操作は印刷です。 ArrayList は、標準のプリミティブ データ型 (整数や文字列など)、またはカスタム クラスなどのより高度なデータ型で構成できます。これらのそれぞれのケースで、ArrayList を印刷するには異なる手順が必要です。

この記事では、Java で ArrayList を出力する上位 3 つの方法を見ていき、上で説明した 2 種類の ArrayList について説明します。早速、始めましょう!

Java ArrayList を印刷する:3 つの方法

上で述べたように、ArrayList には 2 つのタイプがあります。1 つはプリミティブで単純なデータ型 (整数や浮動小数点数など) を持つオブジェクトを含むもの、もう 1 つはカスタム クラスを介してインスタンス化されるオブジェクトを含むものです。これら 2 種類の ArrayList を印刷するには、いくつかの方法があります。

Java で ArrayList を出力する上位 3 つの方法は次のとおりです。

  • for ループの使用
  • println コマンドの使用
  • toString() の使用 実装

方法 1:for ループを使用する

for ループは、リストまたは配列を反復処理する最も簡単な方法の 1 つです。このメソッドは、すべての項目を 1 つずつ反復処理することで、それぞれの項目を適切に処理できるため、単純な配列と ArrayList の両方でうまく機能します。

このメソッドは、各要素の特定の実装を定義するのに役立ちます。 for ループの構文は次のとおりです。

for (int i=0; i<arr.size(); i++) {
 // Assuming arr is an ArrayList object
 int current = arr.get(i);
 // Do something with the current element here
}

ここで、for ループを使用してオブジェクトの配列を走査する一般的な方法をいくつか見てみましょう。

for ループの例

for ループを使用すると、ArrayList のすべての要素を単純に出力できます。

ArrayList<Integer> arr = new ArrayList<>();
arr.add(3);
arr.add(4);
arr.add(5);
arr.add(6);
for (int i=0; i<arr.size(); i++) {
 int curr = arr.get(i);
 System.out.println(curr);
}

これをさらに上のレベルに引き上げるために、任意の条件に基づいて要素ごとに特定のケースを定義できます。

ArrayList arr = new ArrayList<>();
arr.add(3);
arr.add(5l);
arr.add("Hello World!");
 for (int i=0; i<arr.size(); i++) {
 if (arr.get(i) instanceof Integer)
 System.out.println(arr.get(i) + " is a number");
 else if (arr.get(i) instanceof String)
 System.out.println(arr.get(i) + " is a string");
 else if (arr.get(i) instanceof Long)
 System.out.println(arr.get(i) + " is a long");
}

この方法を使用する場合

for ループは、要素のセットが比較的短く、型があまり変わらない状況に最適です。整数 (int) または文字列の 20 項目のリストがある場合は、for ループが最適です。文字列、整数、ブール値などのアイテムが 100 個以上含まれるリストがある場合、for ループは煩雑すぎて使用できなくなります。

方法 2:println コマンドを使用する

println コマンドは、プリミティブ データ型を使用して作成された ArrayList の場合に直接使用できます。 Java のプリミティブ データ型には、string、integer、float、long、double、boolean が含まれます。これらの種類に一致しないデータでリストが構成されている場合、この方法では印刷できません。

このメソッドの構文は簡単です。

System.out.println(arr);
// Assuming arr is an ArrayList object

この方法が機能する理由は、すべてのプリミティブ データ型を標準出力デバイスに直接出力できるためです。印刷可能な形式に解析する必要はありません。カスタム クラスのインスタンスに保存されているデータなど、他のデータは println コマンドで直接解析できないため、この場合、このメソッドは機能しません。

println の例

単純な整数 ArrayList を出力しようとしている場合は、次の方法で実行します。

ArrayList<Integer> arr = new ArrayList<>();
arr.add(5);
arr.add(4);
arr.add(6);
System.out.println(arr);
# => [5, 4, 6]

異種の ArrayList を出力しようとしている場合は、それも機能します。

ArrayList<> arr = new ArrayList<>();
arr.add(7);
arr.add("Foo");
arr.add(12l);
System.out.println(arr);
# => [7, Foo, 12]

この方法を使用する場合

この方法は、項目の短くて単純なリストがあり、デバッグ目的でそれを印刷したい場合に最適です。この方法は前の方法ほど柔軟ではなく、出力デバイスに印刷されるコンテンツをフォーマットできないことに注意してください。 

さらに、リストに非プリミティブ データが含まれている場合、その値はデバイスに出力されません。代わりに、メモリ内のその位置へのポインタが出力されます。

class Foo {
 int bar;
 public Foo(int bar){ this.bar = bar; };
}
ArrayList<> arr = new ArrayList<>();
arr.add(4);
arr.add(new Foo(40));
System.out.println(arr);
# => [4, 34n2dsf@Foo];

方法 3:toString() メソッドを実装する

この方法には、前の方法の欠点がありません。非プリミティブ オブジェクトを出力に直接出力できない理由は、コンパイラがそれらのオブジェクトを出力する方法を知らないためです。 toString() メソッドを使用すると、クラスのオブジェクトをコマンド ラインに出力する方法をコンパイラーに指示できます。

最後の例からクラス Foo を取り上げてみましょう。

class Foo {
 int bar;
 public Foo(int bar){ this.bar = bar; };
}

これを印刷しやすいようにするには、toString() をオーバーライドして定義する必要があります。 クラス定義内のメソッド:

class Foo {
 int bar;
 public Foo(int bar){ this.bar = bar; };
 public String toString() {
 return "Bar: " + String.valueOf(bar);
 }
}

ここで、Foo のインスタンスを作成してみると次のようになります。

そしてそれを印刷します:

前に定義した出力が得られます。

この小さな修正を println メソッドと組み合わせると、あらゆる種類の ArrayList を簡単かつ迅速に印刷できます。

toString() の例

方法 2 の最後の例を取り上げて、println に適したものにしてみましょう。

class Foo {
 int bar;
 public Foo(int bar){ this.bar = bar; };
}
ArrayList<> arr = new ArrayList<>();
arr.add(4);
arr.add(new Foo(40));
System.out.println(arr);
# => [4, Foo@2a139a55];

ここで行う必要がある唯一の変更は、toString() を追加することです。 Foo クラスの定義:

Java ArrayList をマスターする:効率的なデータ処理のための包括的なガイド

「キャリア カルマは、私が最も必要としたときに私の人生に入り込み、すぐにブートキャンプに参加するのに役立ちました。卒業から 2 か月後、私は自分の価値観と人生の目標に合致する夢の仕事を見つけました。」

Rockbot のソフトウェア エンジニア、Venus 氏

ブートキャンプにマッチするものを見つけてください

class Foo {
 int bar;
 public Foo(int bar){ this.bar = bar; };
 public String toString(){
 return "Value: " + String.valueOf(bar);
 }
}
Now, the println statement will give the desired output:
// # => [4, Value: 40]

この方法を使用する場合

このメソッドは、異種の ArrayList またはカスタム クラスで構成される同種の ArrayList を印刷する必要がある状況に適しています。クラス内にメソッドを 1 つ定義するだけで、for ループを使用する場合に発生する問題を回避できます。

ただし、この方法は、単純な状況では過剰に見える可能性があります。要素のリストが少ない場合は、ロジックを簡単かつ単純にするために for ループ メソッドを使用することを検討できます。

結論

Java ArrayList を出力するのは簡単な作業ではありません。 ArrayList の内容が動的であればあるほど、リストを標準出力に出力することが難しくなります。 println コマンドでほとんどの場合をカバーできますが、toString() も必要になる場合があります。 ジョブを完了するにはオーバーライドします。

この記事では、ArrayList を出力する 3 つの方法について説明しました。それらの構文、例、およびそれらが最適な状況を検討しました。より高度な Java リソースについては、Java の学習方法に関するガイドを参照してください。


  1. Javaでこれへの参照を割り当てることは可能ですか?

    「これ」 Javaのキーワードは、インスタンスメソッドまたはコンストラクター内で現在のオブジェクトへの参照として使用されます。これを使用すると、コンストラクター、変数、メソッドなどのクラスのメンバーを参照できます。 「これ」への参照の割り当て 定義によるとthis 現在のオブジェクト(コンストラクター/メソッドを使用しているオブジェクト)への参照として機能するキーワードであり、その値IDは固定されています。したがって、新しい参照値を割り当てることはできません。さらに、これは単なるキーワードであり、変数ではありません。 それでも、それを行おうとすると、 thisに参照値を割り当て

  2. JavaでJTextAreaの切り取り、コピー、貼り付け機能を無効にするにはどうすればよいですか?

    A JTextArea JTextComponentのサブクラスです クラスであり、複数行のテキストコンポーネント テキストを表示するか、ユーザーがテキストを入力できるようにします。 JTextAreaはCaretListenerを生成できます JTextAreaの機能を実装しようとしているときのインターフェース。デフォルトでは、 JTextArea クラスは切り取り、コピー、貼り付けをサポートできます 機能については、無効またはオフにすることもできます 切り取り、コピー、貼り付けの機能 getInputMap()。put()を使用する JTextAreaのメソッド クラス。 K