80 Java コレクション面接の質問と回答(2025)

ここにあります Java 夢の仕事に就くための、新卒者と経験豊富な候補者向けのコレクション面接の質問。

 

Java 新入社員向けコレクション面接の質問と回答

1) フレームワークとは何か Java?

フレームワークは、一連のクラスとインターフェースを含む、一般的な既成のアーキテクチャです。


2) コレクションフレームワークとは Java?

コレクション フレームワークは、オブジェクトを保存および管理するために使用されるクラスとインターフェイスのグループです。Vector、ArrayList、HashSet、Stack などのさまざまなクラスを提供します。 Java コレクション フレームワークは、Queue、Set、List などのインターフェイスにも使用できます。

Java コレクション面接の質問


3) コレクションクラスの説明

java.util.Collections は、コレクションを操作する静的メソッドで構成されるクラスです。コレクションを操作するためのポリモーフィック アルゴリズム (「ラッパー」) が含まれています。このクラスには、バイナリ ソート、検索、シャッフルなどのアルゴリズムのメソッドが含まれています。


4) hashCode() とは何ですか?

hashCode() は整数のハッシュ コードを返すメソッドです。


5) ArrayListとVectorを区別する Java コレクションフレームワーク。

配列リスト ベクトル
ArrayList は同期できません。 ベクトルは同期できます。
これはレガシークラスではありません。 レガシークラスです。
サイズは配列のサイズの 50% まで増加する可能性があります。 配列のサイズを XNUMX 倍にすることでサイズを増やすことができます。
ArrayList はスレッドセーフではありません。 Vector はスレッドセーフです。

6) ArrayListとは何か Java?

配列リスト は、それ自体内に追加要素を収容するために拡張でき、要素が削除されるとより小さいサイズに縮小できるデータ構造です。 これは、要素の動的な動作を処理するのに役立つ非常に重要なデータ構造です。


7) Iterator と ListIterator の区別

Iterator と ListIterator の違いは次のとおりです。

イテレータ リスト反復子
Iterator は配列要素を順方向に走査できます。 ListIterator は、配列要素を順方向だけでなく逆方向にも走査できます。
キュー、リスト、セットで使用できます。 リストで使用できます。
削除操作のみ実行できます。 コレクションを走査しながら、追加、削除、設定操作を実行できます。

8) イテレータと列挙の違いは何ですか?

イテレータと列挙型の違い

イテレータ 列挙
Iterator は、レガシー要素と非レガシー要素の両方をトラバースできます。 列挙はレガシー要素のみをトラバースできます。
イテレータはフェイルファストです。 列挙はフェイルファストではありません。
Iterator は Enumeration に比べて非常に遅いです。 列挙はイテレータに比べて高速です。
Iterator はコレクションを走査しながら削除操作を実行できます。 列挙体はコレクションに対してトラバース操作のみを実行できます。

9) BlockingQueueの定義

BlockingQueueは、 Java キューを拡張できます。取得、挿入、削除などのさまざまなキュー操作の同時実行性を実現します。

キューは、要素を取得するときに空でなくなるまで待機します。 BlockingQueue には null 要素を含めることはできません。 このキューの実装はスレッドセーフです。

BlockingQueue の構文は次のとおりです。

public interface BlockingQueue<E> extends Queue <E>

10) overridequals()メソッドの説明

XNUMX つのオブジェクト間の類似性をチェックするには、equals メソッドを使用します。 プログラマがプロパティに基づいてオブジェクトをチェックしたい場合は、プロパティをオーバーライドする必要があります。


11) 比較可能と比較器の違いは何ですか?

比較可能とコンパレーターの違いは次のとおりです。

匹敵します コンパレータ
Comparableは、要素をソートするためのcompareTo()メソッドを提供します。 Java. Comparatorは、要素をソートするためのcompare()メソッドを提供します。 Java.
同等のインターフェースが java.lang パッケージに存在します。 コンパレータインターフェイスはJavaに存在します。 ユーティリティパッケージ。
並べ替えのロジックは、並べ替えるオブジェクトと同じクラス内にある必要があります。 オブジェクトのさまざまな属性に基づいてさまざまな並べ替えを作成するには、並べ替えのロジックを別のクラスに含める必要があります。
オブジェクトを並べ替えるクラスは、同等のインターフェイスを実装する必要があります。 オブジェクトを並べ替えるクラスは、コンパレータ インターフェイスを実装する必要はありません。
単一の並べ替えシーケンスを提供します。 複数の並べ替えシーケンスを提供します。
この方法では、自然な並べ替え順序に従ってデータを並べ替えることができます。 このメソッドは、カスタマイズされた並べ替え順序に従ってデータを並べ替えます。
元のクラスに影響します。 つまり、実際のクラスが変更されます。 元のクラスには影響しません。つまり、実際のクラスは変更されません。
API では、Calendar、Wrapper クラス、Date、および String によって頻繁に実装されます。 これは、サードパーティ クラスのインスタンスを並べ替えるために実装されています。
すべてのラッパー クラスと String クラスは、同等のインターフェイスを実装します。 Comparator で実装されているクラスは Collat​​or と RuleBasedColator だけです。

12) 例を使ってequals()を説明する

Equals() は、数値オブジェクトが引数として渡されたオブジェクトと等しいかどうかを検証します。

equals() メソッドの構文は次のとおりです。

public boolean equals(Object o)

このメソッドは 1 つのパラメータ、2) 任意のオブジェクト、XNUMX) 戻り値を取ります。 渡された引数が null ではなく、同じ数値を持つ同様の型のオブジェクトである場合、true を返します。

サブスクリプション型フィットネスアプリでは、

import java.lang.Integer;
public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

13) ジェネリックコレクションの利点を列挙する

ジェネリック コレクションを使用する利点は次のとおりです。

  • プログラマがジェネリック クラスを使用している場合、型キャストは必要ありません。
  • これはタイプセーフであり、コンパイル時にチェックできます。
  • コンパイル時にバグを検出することでコードの安定性を実現します。

14) ArrayList を Array に、Array を ArrayList に変換する方法を説明する

プログラマは、Arrays クラスの asList() メソッドを使用して、Array を ArrayList に変換できます。 List オブジェクトを受け取る Arrays クラスの静的メソッドです。 asList() メソッドの構文は次のとおりです。

Arrays.asList(item)

Java プログラマーは次の構文を使用して ArrayList を List オブジェクトに変換できます。

List_object.toArray(new String[List_object.size()])

15) ArrayList の例を挙げる

逆の ArrayList の例は次のとおりです。

import java.util.ArrayList;
class Test_ArrayList {
 public static void main(String[] args) {
  //Creating a generic ArrayList
  ArrayList<String> arlTest = new ArrayList<String>();
  //Size of arrayList
  System.out.println("Size of ArrayList at creation: " + arlTest.size());
  //Lets add some elements to it
  arlTest.add("D");
  arlTest.add("U");
  arlTest.add("K");
  arlTest.add("E");

  //Recheck the size after adding elements
  System.out.println("Size of ArrayList after adding elements: " + arlTest.size());

  //Display all contents of ArrayList
  System.out.println("List of all elements: " + arlTest);

  //Remove some elements from the list
  arlTest.remove("D");
  System.out.println("See contents after removing one element: " + arlTest);

  //Remove element by index
  arlTest.remove(2);
  System.out.println("See contents after removing element by index: " + arlTest);
  //Check size after removing elements
  System.out.println("Size of arrayList after removing elements: " + arlTest.size());
  System.out.println("List of all elements after removing elements: " + arlTest);
  //Check if the list contains "K"
  System.out.println(arlTest.contains("K"));
 }
}

16) 配列を降順にソートする例を示します

配列を降順に並べ替える例は次のとおりです。

package com.guru99;

public class SelectionSortAlgo {
 
	public static void main(String a[])
	{  
		int[] myArray = {860,8,200,9}; 
		
		System.out.println("------Before Sort-----");
 
		printArray(myArray);
 		selection(myArray);//sorting array using selection sort  
 		System.out.println("-----After Sort-----");  
		printArray(myArray); 
	} 
		public static void selection(int[] array)
	{  
		for (int i = 0; i < array.length - 1; i++)  
		{  System.out.println("Sort Pass Number "+(i+1));
			int index = i;  
			for (int j = i + 1; j < array.length; j++)
			{   
			    System.out.println("Comparing "+ array[index]  + " and " + array[j]);  
				if (array[j] < array[index]){ 
				System.out.println(array[index]  + " is greater than " + array[j] );
					index = j;		
				}  
			}  
			int smallerNumber = array[index];   
			array[index] = array[i];  
			array[i] = smallerNumber;  
			System.out.println("Swapping Elements: New Array After Swap");
			printArray(array);
		}  
	}  
	static void printArray(int[] array){
	    
	    for(int i=0; i < array.length; i++)
		{  
			System.out.print(array[i] + " ");  
		} 
	    System.out.println();   
	}
}

17) の基本的なインターフェースを説明します。 Java コレクションフレームワーク

Java コレクションフレームワークはコレクション階層のルートです。オブジェクトのグループをその要素として表します。 Java プログラミング言語は、このようなインターフェースの直接的な実装を提供しません。

  • セット: Set は重複する要素を持たないコレクションです。 要素の保存にはハッシュテーブルを使用します。
  • リスト: リストは、重複する要素を含むことができる順序付きコレクションです。これにより、開発者は受信トレイから任意の要素にアクセスできます。リストは、動的な長さを持つ配列のようなものです。
  • 地図: キーを値にマッピングするオブジェクトです。 重複キーを含めることはできません。 各キーは少なくとも XNUMX つの値にマッピングできます。

18) 特徴は何ですか? Java ハッシュマップ?

の特長 Java ハッシュマップ には次の値があります:

  • 値は、キーと値のペアを形成することでマップに保存できます。 キーを正しいメソッドに渡すことで、キーを使用して値を取得できます。
  • Map に要素が存在しない場合は、「NoSuchElementException」がスローされます。
  • HashMapはオブジェクト参照のみを格納します。そのため、doubleやintなどのプリミティブデータ型は使用できません。ラッパークラス(Integerや Double)代わりに。


19) スタックとは何ですか?

スタックは、関数によって作成された一時変数を保存するコンピューターのメモリの特別な領域です。 スタックでは、変数は実行時に宣言、保存、初期化されます。


20) リンクリストとは何ですか?

リンク リストは、項目のコレクションを保存できるデータ構造です。 つまり、リンク リストを使用して、同じタイプの複数のオブジェクトを保存できます。 リストの各ユニットまたは要素はノードと呼ばれます。 リンク リスト内のノードには、そのデータと次のノードのアドレスが含まれます。 まるで鎖のようだ。 リンク リストは、グラフとツリーを作成するために使用されます。


Java 経験豊富なコレクション担当者向けの面接の質問と回答

21) ArrayList の例を挙げる

ArrayList の例は次のとおりです。

import java.util.ArrayList;
class Test_ArrayList {
 public static void main(String[] args) {
  //Creating a generic ArrayList
  ArrayList<String> arlTest = new ArrayList<String>();
  //Size of arrayList
  System.out.println("Size of ArrayList at creation: " + arlTest.size());
  //Lets add some elements to it
  arlTest.add("D");
  arlTest.add("U");
  arlTest.add("K");
  arlTest.add("E");

  //Recheck the size after adding elements
  System.out.println("Size of ArrayList after adding elements: " + arlTest.size());

  //Display all contents of ArrayList
  System.out.println("List of all elements: " + arlTest);

  //Remove some elements from the list
  arlTest.remove("D");
  System.out.println("See contents after removing one element: " + arlTest);

  //Remove element by index
  arlTest.remove(2);
  System.out.println("See contents after removing element by index: " + arlTest);

  //Check size after removing elements
  System.out.println("Size of arrayList after removing elements: " + arlTest.size());
  System.out.println("List of all elements after removing elements: " + arlTest);
  //Check if the list contains "K"
  System.out.println(arlTest.contains("K"));
 }
}

22) リンクリストの説明 Java

サポートされている2種類のリンクリスト Java には次の値があります:

  • 単一リンクリスト: 単一リンクリストはデータ構造の一種です。 単一リンクリストでは、リスト内の各ノードは、ノードの内容と、リスト内の次のノードへの参照またはポインタを格納します。 前のノードへの参照やポインタは保存されません。
  • 二重リンクリスト: 二重リンク リストは、データ要素間の走査を両方向に実行できる特殊なタイプのリンク リストです。 これは、すべてのノードに XNUMX つのリンク (XNUMX つは次のノードにリンクし、もう XNUMX つは前のノードに接続) を設けることで可能になります。

23) Queue インターフェースによって提供されるメソッドについて説明しますか?

の方法 Java キュー インターフェースは次のとおりです。

方法 説明
ブール値の追加(オブジェクト) 指定された要素をキューに挿入します。 成功した場合は true を返します。
ブール値のオファー(オブジェクト) このメソッドは、要素をキューに挿入するために使用されます。
オブジェクトremove() キューヘッドを取得して削除します。
オブジェクトpoll() (): キューヘッドを取得して削除するか、空の場合は null を返します。
オブジェクトpoll() キューヘッドを取得して削除するか、空の場合は null を返します。
オブジェクトelement() キューからデータを取得しますが、そのヘッドは削除しません。
オブジェクトpeek() キューからデータを取得しますが、そのヘッドは削除しません。キューが空の場合は、null を取得します。

24) Stack クラスが提供するメソッドについて言及する

Stack クラスによって提供される重要なメソッドは次のとおりです。

  • 押す(): アイテムをスタックにプッシュします。
  • 空の (): このメソッドは、スタックが空かどうかを調べます。
  • ポップ (): この Java コレクション フレームワーク メソッドは、スタックからオブジェクトを削除します。
  • 検索 (): このメソッドはスタック内の項目を検索します。
  • ピーク (): この Java メソッドはスタック オブジェクトを削除せずに参照します。

25) emptySet() を定義します。 Java コレクションフレームワーク

プログラマーが null 要素を削除しようとするたびに、空の不変セットを返すメソッド emptySet()。 emptySet() によって返されるセットはシリアル化可能です。 このメソッドの構文は次のとおりです。

パブリック静的最終セット空集合()


26) コレクションとコレクションを区別する

コレクションとコレクションの違いは次のとおりです。

収集 コレクション
コレクションはインターフェイスです。 コレクションはクラスです。
オブジェクトのグループを XNUMX つのエンティティとして表します。 コレクション オブジェクトのさまざまなユーティリティ メソッドを定義します。
コレクションは、 Java コレクションフレームワーク。 Collections は一般的なユーティリティ クラスです。
このインターフェイスは、コレクション データ構造を導出するために使用されます。 このクラスには、データ構造を操作するための静的メソッドが含まれています。

27) LinkedHashSetを定義する Java コレクションフレームワーク?

LinkedHashSet は HashSet というクラスのサブクラスであり、set インターフェイスを実装します。 これは、すべての要素にわたって二重リンクされたリストを維持する、整然としたバージョンの HashSet です。


28) フェイルファストとフェイルセーフの違いは何ですか?

フェイルファスト フェイルセーフ
反復中にコレクションを変更することはできません。 これにより、反復中にコレクションを変更できます。
ConcurrentModificationException をスローする可能性があります 例外をスローすることはできません。
元のコレクションを使用して要素を走査します。 元のコレクションのコピーを使用して要素を走査します。
追加のメモリは必要ありません。 追加のメモリが必要です。

29) マップインターフェイスのリストコレクションビュー

マップ インターフェイスのコレクション ビューには、1) キー セット ビュー、2) 値セット ビュー、3) エントリ セット ビューがあります。


30) 収集フレームワークの利点は何ですか? Java?

コレクションフレームワークの利点 Java には次の値があります:

  • Java コレクション フレームワークは、プログラムの精度と速度を向上させる、非常に効率的で効果的なデータ構造を提供します。
  • このプログラムは、 Java コレクション フレームワークは保守が容易です。
  • 開発者はクラスを他のタイプと混合できるため、コードの再利用性が向上します。
  • この Java コレクション フレームワークを使用すると、プログラマーはプリミティブ コレクション タイプを好きなように変更できます。

31) コレクションオブジェクトを並べ替える良い方法は何ですか? Java?

整理する良い方法 Java コレクション オブジェクトは Comparable および Comparator インターフェイスを使用します。開発者は Collections.sort() を使用でき、要素は compareTo() で指定された順序に基づいてソートされます。

開発者が Collections、sort (Comparator) を使用する場合、Comparator インターフェイスの Compare() に応じてオブジェクトを並べ替えます。


32) ベクトルを説明する Java

ベクトルは配列と同じです。 インデックス値を使用してアクセスできるコンポーネントがあります。 ベクターには、コレクション フレームワークの一部ではないレガシー メソッドを含めることができます。


33) セットとマップの違いは何ですか?

作成セッションプロセスで 地図
セットは package-java.util に属します。 マップはパッケージ java.util に属します。
コレクション インターフェイスを拡張できます。 コレクション インターフェイスは拡張されません。
重複した値は許可されません。 値の重複が許可されます。
Set では、XNUMX つの null 値のみを並べ替えることができます。 マップでは複数の null 値を並べ替えることができます。

34) 辞書クラスの定義

Dictionaryクラスは Java キーと値のペアを格納する機能を持つクラス。


35) EnumSet を定義する

java.util.EnumSet は、列挙型で使用できる Set 実装です。すべての要素を持つ EnumSet は、明示的または暗黙的に指定された 1 つの列挙型から取得する必要があります。同期されず、null キーも許可されません。EnumSet には、EnumSetof(E first, E… rest)、complementOf(EnumSet s)、copyOf(Collection c) などのメソッドが用意されています。


36) ArrayList から重複を削除する XNUMX つの方法は何ですか?

ArrayList から重複を削除するには、次の XNUMX つの方法があります。

  • ハッシュセット: 開発者は HashSet を使用して、ArrayList から重複要素を削除できます。 欠点は、広告掲載順序を保存できないことです。
  • リンクされたハッシュセット: 開発者は、HashSet の代わりに LinkedHashSet を使用して挿入順序を維持することもできます。

37) IdentityHashMapとは何ですか?

IdentityHashMap は、Serializable、Clonable インターフェイス、Map を実装し、AbstractMap クラスを拡張するクラスです。 これは、参照等価セマンティクスが必要な場合のために設計されています。


38) WeakHashMapとは何ですか?

WeakHashMapは、 Java マップ。キーへの弱い参照を格納するために使用されます。このマップを使用してソートすると、キーと値のペアがガベージとして収集されます。キーは WeakHashMap の外部では参照されません。


39) コレクションをスレッドセーフにする方法は何ですか?

コレクションをスレッドセーフにする方法は次のとおりです。

  • Collections.synchronizedList(リスト);
  • コレクション.synchronizedMap(マップ);
  • コレクション.synchronizedSet(set);

40) サポートされていないことを説明するOpera例外

非対応OperationException は、実際のコレクション型でサポートされていないメソッドでスローされる例外です。

たとえば、開発者は「Collections.unmodifiableList(list)」を使用して読み取り専用リストを作成し、call()、add()、またはremove()メソッドを呼び出します。明らかに Unsupported をスローする必要がありますOpera例外。


41) 要素へのランダムな要素アクセスを与えるコレクション クラスに名前を付けます

要素へのランダムな要素アクセスを与えるコレクション クラスは、1) ArrayList、2) HashMap、3) TreeMap、および 4) Hashtable です。


42) Queue と Deque の違いを説明してください。

キュー デック
シングルエンドキューと呼ばれます これは両端キューと呼ばれます
キュー内の要素は一方の端から追加または削除されます キュー内の要素はどちらかの端から追加され、両端から追加および削除できます
汎用性が低いです。 より多用途です。

43) List および Set インターフェイスの実装について言及する

List インターフェースを実装するクラス: 1) ArrayList、2) Vector、および 3) LinkedList。

Set インターフェイスを実装するクラス: 1) ハッシュセット、および 2) ツリーセット。


44) イテレータが従う設計パターンを説明する

イテレータは、イテレータ設計パターンの詳細に従います。これにより、開発者は実装を知らなくても、共通インターフェイスを使用してオブジェクト コレクション内を移動できるようになります。


45) Queueインターフェースのpeek()とは何ですか?

Peek()はキューインターフェースのメソッドです。 すべての要素を取得しますが、キューのヘッドは削除しません。 キューが空の場合、このメソッドは null を返します。


46) CopyOnWriteArrayListとは何ですか?

CopyOnWriteArrayList は ArrayList のバリアントで、配列のコピーを作成することで追加や設定などの操作が実装されます。これはスレッドセーフであるため、ConcurrentModificationException をスローしません。この ArrayList は、null を含むすべての要素を許可します。


47) ArrayList と LinkedList の区別

ArrayList と LinkedList の違いは次のとおりです。

配列リスト 連結リスト
動的配列を使用します。 二重リンクリストを使用します。
ArrayList は操作には好ましくありません。 LinkedList は操作に適しています。
ArrayList はランダム アクセスを提供します。 LinkedList はランダム アクセスを提供しません。
ArrayList はオブジェクトのみを格納するため、メモリのオーバーヘッドが少なくなります LinkedList は、アドレス オブジェクトだけでなくオブジェクトも格納します。 したがって、より多くのメモリのオーバーヘッドが必要になります。

48) イテレータインターフェースのメソッドを説明する

イテレータインターフェイスのメソッドは次のとおりです。

方法 説明
パブリックブール値 hasNext() イテレータに要素がある場合は true を返し、そうでない場合は false を返します。
public Object next() このメソッドは要素を返し、ポインタを次の値に移動します。
パブリック void 削除() この Java メソッドは、イテレータによって返された最後の要素を削除できます。Public void remove() はあまり使用されません。

49) HashSet クラスのメソッドは何ですか?

HashSet クラスのメソッドは次のとおりです。

メソッド 説明
ブール値の add(オブジェクト o) このメソッドは、メンション要素がこのセットにまだ存在しない場合は追加します。
ブール値には次のものが含まれます(オブジェクト o): セットに指定された要素が含まれている場合は true を返します。
ボイドクリア(): このメソッドは、設定された要素を削除します。
ブール値 isEmpty(): セットに要素がない場合は true を返します。
ブール値の削除(オブジェクト o): 指定された要素をセットから削除します。
オブジェクト clone(): このメソッドは HashSet インスタンスのコピーを返します。要素自体は複製されません。
イテレータ iterator() このセット内の要素に対する反復子を返します。
int サイズ(): セット内で使用可能な要素の数を返します。

50) どのような方法がありますか? Java TreeSet クラス?

の方法は Java TreeSet クラスは次のとおりです。

メソッド Descriptイオン
boolean addAll(Collection c) 指定されたコレクション内のすべての要素をこのセットに追加します。
boolean contains(Object o) セットにメンション要素が含まれている場合は true を返します。
ブールisEmpty() この Java このセットに要素が含まれていない場合、メソッドは true を返します。
boolean remove(Object o) 指定された要素をセットから削除します。
void add(オブジェクトo) 指定された要素をセットに追加します。
void clear() この Java メソッドはセットからすべての要素を削除します。

51) リンクされたハッシュセットについて説明する

Java LinkedHashSetクラスは、Setインターフェースのリンクリストとハッシュテーブルの実装です。HashSetと同じユニークな要素が含まれています。 Java 挿入順序を維持できるオプションのセット操作も提供します。


52) リンクリストで使用される重要なメソッドは何ですか?

リンクされたリストで使用される重要なメソッドは次のとおりです。

方法 説明
boolean add(オブジェクトo) 指定された要素をベクトルの末尾に追加するために使用されます。
boolean contains(Object o) このリストに指定された要素が含まれている場合に true を返すメソッドです。
void add (int インデックス、オブジェクト要素) ベクトル内の指定された要素に要素を挿入します。
void addFirst(オブジェクトo) 指定された要素を先頭に挿入するために使用されます。
void addLast(オブジェクトo) 指定された要素を末尾に追加するために使用されます。
整数サイズ() このメソッドは、リスト内の要素の合計数を返すために使用できます。
boolean remove(Object o) このリストから、指定された要素の最初の出現を削除できます。
intindexOf(オブジェクト要素) この Java メソッドは、このリスト内で最初に出現するメンション要素のインデックス、または -1 を返します。
int lastIndexOf(オブジェクト要素) それは、 Java このリスト内で指定された要素が最後に出現するインデックス、または -1 を返すメソッド。

53) セットで利用可能なさまざまなクラスをリストする

セットで使用できるさまざまなクラスは、HashSet、TreeSetand、および LinkedHashSet です。


54) 利用可能なメソッドを一覧表示する Java キューインターフェース

  • ブール値の追加(オブジェクト)
  • ブール値のオファー(オブジェクト)
  • オブジェクトの削除()
  • オブジェクトのポーリング()
  • オブジェクト要素()
  • オブジェクトのピーク()

55) リストとセットを区別します。

リスト 作成セッションプロセスで
順序付けられた要素のコレクション 順序付けされていない要素のコレクション
広告掲載オーダーを保持します 広告掲載オーダーは保持されません
重複する値は許可されます 重複する値は許可されません
任意の数の Null 値を格納できる null 値は XNUMX つだけ保存できます
ListIterator を使用すると、リストを任意の方向に走査できます。 ListIterator を使用して Set を走査することはできません
Vector というレガシー クラスが含まれています レガシークラスは含まれていません

Java 5年以上の経験を持つ回収担当者向けの面接の質問と回答

56) 各ループを例を挙げて説明する

For-Each ループは、配列を走査するために使用される for ループの別の形式です。 これによりコードが大幅に削減され、ループ内でインデックスまたはカウンタが使用されなくなります。

for each ループの例:

class UsingForEach {
  public static void main(String[] args) {
    String[] arrData = {"Alpha", "Beta", "Gamma", "Delta", "Sigma"};
    //The conventional approach of using the for loop
    System.out.println("Using conventional For Loop:");
    for(int i=0; i< arrData.length; i++){
      System.out.println(arrData[i]);
    }
    System.out.println("\nUsing Foreach loop:");
    //The optimized method of using the for loop - also called the foreach loop
    for (String strTemp : arrData){
      System.out.println(strTemp);
    }
  }
}

57) ダイヤモンド演算子を説明してください。

ダイヤモンド演算子は、コンパイラがジェネリッククラスの型引数を収集できるようにします。 Java SE では、開発者はパラメーター化されたコンストラクターを、ダイヤモンド演算子と呼ばれる空のパラメーター セット (<>) に置き換えることができます。


58) ランダムアクセスインターフェースについて説明する

RandomAccess インターフェイスは、List 実装が高速にサポートしていることを示すために使用されます。


59) ランダムアクセスインターフェースを実装するコレクションクラスに名前を付けます

Java.util パッケージには、ランダム アクセス インターフェイスを実装できるクラス (CopyOnWriteArrayList、Stack、ArrayList、Vector) があります。


60) 複数の ArrayList を結合するにはどうすればよいですか?

リストはaddall()メソッドを提供し、複数のArrayListを提供します Java.

たとえば、1) areaList と 2) SecondAreaList という XNUMX つのリストについて考えてみましょう。 開発者は次のように addall() を使用してそれらに参加できます。

areaList.addAll(XNUMX番目のAreaList);


61) deque インターフェースについて説明する

Java.util.Dequeは JavaQueue インターフェースを拡張するインターフェースです。両端での要素の挿入と削除をサポートします。この Queue は両端キューとも呼ばれます。


62) Linkedhashmap について説明する

LinkedHashMapはMapインターフェースの実装です。HashMapクラスを拡張することもできます。したがって、HashMapと同様に、LinkedHashMapは Java 開発者は 1 つの null キーと複数の null 値を許可できます。


63) ArrayList から要素を削除する方法を説明する

ArrayList から要素を削除するメソッドは次のとおりです。

方法 説明
晴れ() このメソッドは、ArrayList から要素を削除します。
remove(int index) ArrayList のこのメソッドは、特定の位置の要素を削除できます。
remove(Object o) 最初に出現した言及要素を ArrayList から削除できます。
すべて削除する() 特定のコレクション内の要素のリストを削除できます。
RemoveIf(述語フィルター) このメソッドは、述語の言及を満たす要素を削除します。

64) 地図を説明します。 マップ内エントリ

Map.entryは Java java.util のインターフェース。Map にネストされたインターフェースがあります。このインターフェースは、メンバーであるクラスまたはインターフェースの名前で修飾する必要があります。したがって、Map として修飾されます。エントリ。Map の要素を形成できるキーと値のペアを表します。

このメソッドはコレクションのビューを返します。 たとえば、地図として cityMap を考えてみましょう。 開発者は、entrySet() を使用して、要素 Map.Entry を持つマップのセット ビューを取得できます。 プログラマは、Map.Entry の getKey() と getValue() を使用して、マップのキーと値のペアを取得することもできます。


65) 配列を昇順にソートするにはどの方法が使用されますか?

Java コレクション フレームワーク メソッドである Collections.sort() は、配列を昇順で並べ替えるために使用されます。


66) ArrayList のパフォーマンスを測定するにはどうすればよいですか?

ArrayList のパフォーマンスは次の方法で測定できます。

  • 要素を追加する: 開発者は、add(E e) メソッドを使用して ArrayList の末尾に要素を追加できます。 O(1)です。 最悪のシナリオでは、O(n) になる可能性があります。 これは、開発者が配列の容量を超える要素を追加した場合に発生する可能性があります。
  • 要素の取得: 開発者は get(int Index) を使用して配列インデックスにアクセスできます。 この場合、ArrayList get() を使用してパフォーマンスを測定すると、O(1) になります。
  • 要素の削除: 開発者がremove(int index)を使用して要素を削除する場合、ArrayListのパフォーマンスは、remove(int index)操作がO(n – index)メソッドであることを使用して計算できます。

67) LinkedListクラスについて説明する

LinkedListクラス Java 二重リンクリストを使用して Deque と List を実装します。二重リンクリストには、その構造を提供するプライベート クラス node があります。また、値と Node クラスへの参照を保持するための item 変数もあります。これは、次のノードと前のノードを接続するために使用できます。


68) ハッシュマップの例を挙げる

ハッシュマップの例は次のとおりです。

import java.util.HashMap;
import java.util.Map;
public class Sample_TestMaps{
  public static void main(String[] args){
    Map<String, String> objMap = new HashMap<String, String>();
    objMap.put("Name", "Suzuki");
    objMap.put("Power", "220");
    objMap.put("Type", "2-wheeler");
    objMap.put("Price", "85000");
    System.out.println("Elements of the Map:");
    System.out.println(objMap);
  }
}

69) マップを反復するにはどうすればよいですか?

開発者はマップを直接反復することはできませんが、このインターフェイスにはマップのビュー セットを提供する XNUMX つのメソッドがあります。 これらの方法は次のとおりです。

  • セット >エントリセット(): マップ内で言及されているエントリを含むセットを返すメソッドです。 これらのエントリは通常オブジェクトであり、タイプは Map です。 エントリ。
  • セットkeySet(): この Java メソッドはマップ キーを持つセットを返します。

70) ツリーマップを説明する Java

TreeMap は、Map インターフェイス LinkedHashMap および HashMap を実装するクラスです。 また、NavigableMap インターフェイスを実装し、AbstractMap クラスを拡張することもできます。


71) ハッシュマップとハッシュテーブルの違いは何ですか?

ハッシュマップ ハッシュ表
同期されていません。 同期されています。
ハッシュマップ XNUMX つのキーを null 値として許可します。 HashTable では null 値は許可されません。
Iterator は HashMap を走査するために使用されます。 Iterator または Enumerator のいずれかが HashTable の走査に使用されます。
HashTable と HashMap の両方に使用でき、フェイルファストです。 HashTable と併用でき、フェイルセーフです。
HashMap は HashTable よりも高速に実行されます。 Hashtable は HashMap と比べてそれほど高速ではありません。

72) HashSetの内部動作を説明してください。 Java

ハッシュセット Java 内部的には HashMap を使用して要素を保存します。重複する値のない一意の値を保存することもできます。

In JavaHashSet 開発者は、追加する要素のみをパラメータとして受け取る add(E e) メソッドを使用できます。キーと値のペアは受け入れません。


73) Big-O 記法を例を挙げて説明する

Big-O 表記は、アルゴリズムのパフォーマンスを ArrayList 内の要素の数として表します。 開発者は、Big-O 記法を使用してコレクションの実装を選択できます。 それはパフォーマンス、時間、記憶に基づいています。

たとえば、ArrayList get(index i) は定数時間の操作を実行するメソッドです。これはリスト内の利用可能な要素の総数に依存しません。したがって、Big-O 表記法でのパフォーマンスは O(1) です。


74) ベストプラクティスを説明する Java コレクションフレームワーク

ベストプラクティス Java コレクション フレームワークは次のとおりです。

  • 必要に応じて、適切な種類のコレクションを選択してください。
  • コレクション クラスに格納される要素の総数を見積もることにより、再ハッシュやサイズ変更を回避します。
  • 書く Java インターフェースの観点からプログラムを定義します。これにより、開発者は将来的に実装を簡単に変更できるようになります。
  • 開発者は、タイプ セーフティのためにジェネリックを使用できます。
  • によって与えられた不変クラスを使用する Java 開発キット。カスタム クラスに equals() および hashCode() を実装しないでください。
  • プログラマーは、アルゴリズムや、読み取り専用、同期、または空のコレクションを取得するために、Collections ユーティリティ クラスを使用する必要があります。これにより、保守性は低くなりますが、コードの再利用性が向上します。

75) さまざまな種類のキューについて説明します。 Java

キューには3つの種類があります Java:

  • 優先キュー: これは、要素が自然な順序またはカスタム コンパレータに従って並べ替えられる特別なタイプのキューです。
  • 循環キュー: FIFO 方式に基づいてユーザー操作を実行するキューの一種です。最後の要素が最初の位置に接続され、円を形成します。
  • Double-終了したキュー: 両端キューは、キューを一般化する抽象データ型です。このキューの要素は、先頭または末尾のどちらからでも追加または削除できます。

76) スタックとキューの違いは何ですか?

スタック キュー
スタックの動作原理は LIFO です。 キューの動作原理は FIFO です。
一方の端は、要素の挿入または削除を実行するために使用されます。 一方の端は要素の挿入の実行に使用され、もう一方の端は要素の削除に使用されます。
XNUMX つのポインターを使用します。 単純なキューで XNUMX つのポインターを使用します。
いかなる種類のバリアントもありません。 優先キュー、循環キュー、二重終了キューなどのバリエーションがあります。
使い方は簡単です。 使い方は簡単ではありません。

77) 配列とスタックの違いは何ですか?

配列とスタックの違いは次のとおりです。

配列 スタック
これは、インデックスによって識別される要素のコレクションです。 これは、push および pop 操作として機能するコレクション操作です。
同じデータ型の要素があります。 異なるデータ型の要素があります。
ランダム アクセス操作を使用して、配列の要素を削除したり、配列に追加したりできます。 LIFO 操作を使用して、スタックから要素を削除したり、スタックに追加したりできます。

78) Iterator() を定義する

Iterator()は、コレクションを反復処理するメソッドを提供するインターフェースです。Iteratorは、 Java呼び出し元がコレクションから要素を削除できるようにします。このメソッドは、コレクションの要素を使用してトラバースし、反復子設計パターンを実装するための一般的な方法を提供します。


79) リストを反復処理するさまざまな方法には何がありますか?

Java コレクションフレームワークプログラマーは、リストを反復処理する方法が1つあります。2)イテレータを使用する方法と、XNUMX)各要素に対してイテレータを使用する方法です。 ループ.


80) スタックの利点は何ですか?

スタックの利点は次のとおりです。

  • これは、リンク リストと配列では不可能な後入れ先出し (LIFO) 方法でデータを管理するのに役立ちます。
  • 関数が呼び出されると、ローカル変数はスタックに格納され、関数が返されると自動的に破棄されます。
  • スタックは、変数がその関数の外で使用されない場合に使用されます。
  • これにより、メモリの割り当ておよび割り当て解除の方法を制御できます。
  • スタックはオブジェクトを自動的にクリーンアップします。
  • 壊れにくい
  • 変数 サイズ変更はできません。

これらの面接の質問は、あなたの活力(口頭)にも役立ちます