-
Javaで2つのリストをマージする方法|addAll()を使ったサンプルコード解説
この記事では、Javaで2つのリスト(List)を1つにマージ(結合)する方法について解説します。リストとは、要素を順序付けて格納し、インデックスを使って順番にアクセスできるコレクションです。要素の挿入・更新・削除・検索のためのインデックスベースのメソッドが用意されており、重複した要素を保持することもできます。入力と出力のイメージ以下に実際の動作例を示します。入力:1つ目のリスト: [45, 60, 95] 2つ目のリスト: [105, 120]期待される出力:2つのリストをマージした結果: [45, 60, 95, 105, 120]アルゴリズムマージの手順は次のとおりです。ステップ1 -
-
Javaでマップ(Map)を値順にソートする方法【サンプルコード付き】
この記事では、Javaでマップ(Map)を値(Value)を基準にソートする方法を解説します。JavaのHashMapは、Mapインターフェースをハッシュテーブルベースで実装したクラスであり、キーと値のペアを格納するコレクションです。 なお、HashMapは要素の順序を保持しないため、値の順序どおりに出力したい場合は、ソート結果をLinkedHashMapに格納するのがポイントです。まずは、具体的な動作例から見ていきましょう。 たとえば、次のようなHashMapがあったとします。 入力: Input HashMap: Key = Java, Value = 45 Key = Scala, Va
-
Javaで二分木のインオーダー(中間順)トラバーサルを実行するプログラム
この記事では、二分木におけるインオーダー(中間順)トラバーサルの実装方法について詳しく解説します。インオーダー走査とは、各ノードを「左の部分木 → ノード自身 → 右の部分木」の順番で処理する手法です。つまり、まず左側の部分木をすべて訪問し、その後にノード自体を処理し、最後に右側の部分木を訪れます。実際の動作例を見てみましょう。入力(プログラムの実行):Run the program期待される出力:The In-Order traversal of the tree_object is:5->12->6->1->9->アルゴリズムインオーダー走査は、以下の手順で実
-
JavaでカスタムオブジェクトのArrayListをプロパティ順にソートする方法
本記事では、JavaにおいてカスタムオブジェクトのArrayListを、オブジェクトが持つプロパティを基準にソートする方法を解説します。 ArrayListクラスの基本 ArrayListクラスはAbstractListクラスを継承し、Listインターフェースを実装しています。ArrayListは必要に応じて自動的にサイズが拡張される動的配列をサポートしており、柔軟なデータ管理が可能です。 ArrayListは初期サイズを指定して生成されます。要素数がそのサイズを超えると、コレクションは自動的に拡張されます。また、オブジェクトを削除した場合には、配列のサイズが縮小されることもあります。 それで
-
Javaでグラフデータ構造を実装するプログラムの書き方を解説
この記事では、Javaでグラフデータ構造(Graph Data Structure)を実装する方法について詳しく解説します。 グラフとは、頂点(バーテックス/ノード)と、それらを結ぶ辺(エッジ)から構成される非線形データ構造です。隣接リスト形式でグラフを表現する場合、キーと値のペアで要素を管理できるHashMapコレクションを利用する方法があります。本記事ではさらに、各辺の出発点(source)と到達点(destination)を保持するEdgeクラスを定義し、その配列としてグラフ全体を表現するシンプルな実装例を2つのパターンで紹介します。 入力例と出力例 想定する入力: 頂点数: 5 辺数
-
JavaでLinkedList(連結リスト)を実装するプログラムの書き方
この記事では、Javaで連結リスト(Linked List)を実装する方法を詳しく解説します。java.util.LinkedListクラスは、双方向連結リストとして期待される操作を提供するクラスです。インデックスを指定して要素にアクセスする場合、指定されたインデックスに近い方から、リストの先頭または末尾のいずれかを起点として走査が行われます。以下に、その実装例を示します。実行結果の例入力:プログラムを実行する期待される出力:The elements of the linked list are: 100 150 200 250アルゴリズムステップ1 - 開始 ステップ2 - 必要なメンバーを
-
キューデータ構造を実装するJavaプログラム
はじめにこの記事では、Javaでキューデータ構造を実装する方法を詳しく解説します。キューとは、要素の追加・削除が行われる順序が定められた線形データ構造の一つです。最も基本的な規則は「先入れ先出し(FIFO:First In First Out)」であり、最初に追加された要素が最初に取り出されます。日常的な例でいえば、スーパーマーケットや銀行の待ち行列と同じ仕組みです。以下に、この記事で扱う処理の具体例を示します。入力:入力キュー: [150, 300, 450, 600]期待される出力:要素を1つ削除した後のキューの内容: [300, 450, 600]アルゴリズム処理の流れは以下のステップの
-
JavaでLinkedListの中央要素を1回の走査で取得する方法
本記事では、LinkedListの中央要素をたった1回の反復(走査)で取得する方法について解説します。java.util.LinkedListクラスは双方向連結リスト(doubly-linked list)として動作し、インデックスを指定した操作は、リストの先頭または末尾のうち指定インデックスに近い方から走査が行われます。ここで紹介する手法は「2ポインタ法(低速ポインタと高速ポインタ)」と呼ばれる定番テクニックです。1つは1ノードずつ進むポインタ、もう1つは2ノードずつ進むポインタを使い、高速ポインタがリスト末尾に到達した時点で、低速ポインタが中央要素を指すという仕組みです。入力と出力の例入力
-
JavaでLinkedListを配列に変換する方法、および配列からLinkedListへ変換する方法
この記事では、LinkedList(連結リスト)を配列に変換する方法、および配列をLinkedListに変換する方法について、具体的なサンプルコードを交えながら詳しく解説します。java.util.LinkedListクラスとはjava.util.LinkedListクラスは、双方向連結リスト(doubly-linked list)として期待される操作を実装したコレクションクラスです。インデックスを指定してリスト内の要素にアクセスする場合、指定されたインデックスにより近い方の「先頭」または「末尾」から自動的に走査が行われるため、効率的なアクセスが可能です。それでは、実際の変換処理を見ていきまし
-
JavaでArrayListを文字列に変換する方法|文字列から配列への変換も解説
この記事では、ArrayListを文字列に変換する方法と、その逆である文字列を配列に変換する方法について解説します。 ArrayListクラスは、java.utilパッケージに含まれているサイズを動的に変更できる可変長配列です。Javaの組み込み配列とArrayListの最大の違いは、組み込み配列は一度作成するとサイズを変更できないのに対し、ArrayListは要素の追加や削除に合わせて自動的にサイズが拡張・縮小されるという点にあります。 変換イメージ まず、文字列を配列に変換したときの入力と出力の例を見てみましょう。 入力: 入力文字列: Java Program 出力: 文字列から変換後
-
JavaでHashMapを反復処理する方法をわかりやすく解説
この記事では、JavaでHashMapを反復処理する方法について詳しく解説します。JavaのHashMapは、Mapインターフェースをハッシュテーブルベースで実装したクラスであり、キーと値のペア(key-value)を管理するコレクションです。格納されたデータを一つずつ取り出して表示・加工するケースは非常によくあるため、反復処理の書き方はぜひマスターしておきたい基本テクニックです。 以下に具体的な実装例を示します。 入力データの想定: 入力ハッシュマップ: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}
-
JavaでSet(セット)を反復処理するプログラムの書き方
はじめに この記事では、JavaでSet(セット)を反復処理(イテレーション)する方法について解説します。Setは重複した要素を含むことができないコレクションであり、数学における「集合」の抽象概念をモデル化したものです。 Setインターフェースは、Collectionインターフェースから継承したメソッドのみを持ち、そこに「重複要素は禁止」という制約を追加したものになっています。 以下に具体例を示します。 想定する入力: Input set: [Java, Scala, Mysql, Python] 期待される出力: 拡張for文によるSetの反復処理: Java, Scala, Mysql,
-
Javaでキーを指定してHashMapの値を更新する方法
この記事では、キーを指定してHashMapの値を更新する方法を解説します。JavaのHashMapは、Mapインターフェースをハッシュテーブルベースで実装したクラスであり、キーと値のペア(エントリー)を管理するコレクションです。まず、実際の動作イメージを確認しておきましょう。入力と出力の例入力:Input HashMap: {Java=1, Scala=2, Python=3}期待される出力:The HashMap with the updated value is: {Java=1, Scala=12, Python=3}このように、キー「Scala」に対応する値だけが「2」から「12」へ更
-
JavaでArrayListから重複要素を削除する方法を解説
本記事では、JavaのArrayListから重複要素を削除する方法について詳しく解説します。ArrayListクラスはjava.utilパッケージに含まれる可変長配列(サイズを動的に変更できる配列)です。通常の組み込み配列との最大の違いは、配列のサイズは後から変更できないのに対し、ArrayListは要素の追加・削除によってサイズを柔軟に変えられる点にあります。ただし、ArrayListには同じ値が複数含まれることがあり、データの前処理や集計の際に重複を取り除きたい場面は少なくありません。ここでは、LinkedHashSetを利用した定番の手法を中心に、具体的なサンプルコードと実行結果とともに
-
値を指定してHashMapからキーを取得するJavaプログラムの書き方
本記事では、値を指定してHashMapから対応するキーを取得する方法を解説します。JavaのHashMapとは、Mapインターフェースをハッシュテーブルベースで実装したクラスで、キーと値のペア(エントリー)を管理するコレクションです。通常はキーから値を取り出しますが、逆に値からキーを検索したいというケースも少なくありません。以下に、今回実装する内容の具体例を示します。入力例:入力HashMap: {Java=8, Scala=5, Python=15} 検索する値: 8期待される出力:値 8 に対応するキー: Javaアルゴリズムステップ1 - 処理を開始する ステップ2 - 必要な変数を宣言
-
JavaでLinkedListのループ(循環)を検出する方法を徹底解説
本記事では、Javaを使ってLinkedList(連結リスト)内のループ(循環参照)を検出する方法について詳しく解説します。連結リストとは、複数のデータ構造(ノード)をリンクで順につないだデータ構造であり、各ノードにはデータ本体と、次のノードへの参照が格納されています。 通常の連結リストでは末尾のノードがnullを指しますが、ループが存在する場合は、いずれかのノードがすでに通過したノードを再び指すため、リストを辿ると同じ場所に戻り続けることになります。ここでは、ループの有無を判定できる2つの代表的な手法を紹介します。 入力と出力の確認 入力: プログラムを実行する 期待される出力: 連結リス
-
Javaで2つのSetの和集合を求める方法|addAllメソッドの使い方を解説
本記事では、2つのセット(Set)の和集合を計算する方法について詳しく解説します。Setとは、重複する要素を格納できないCollectionの一種で、数学における「集合」の抽象概念をモデル化したものです。SetインターフェースはCollectionから継承したメソッドのみを持ち、そこに「重複要素の追加を禁止する」という制約が加わっています。以下に実際の動作例を示します。入力例:1つ目のセット: [2, 4] 2つ目のセット: [1, 3]期待される出力:2つのセットの和集合は: [1, 2, 3, 4]アルゴリズムステップ1 - 開始 ステップ2 - 必要な変数を宣言する ステップ3 - 値を
-
Javaで2つのSetの積集合(共通部分)を計算するプログラム
この記事では、2つのSet(集合)の積集合、つまり共通部分を計算する方法について詳しく解説します。 Setとは、重複する要素を含むことができないCollectionであり、数学における「集合」の概念をモデル化したものです。SetインターフェースにはCollectionから継承されたメソッドのみが定義されており、そこに「重複要素を許可しない」という制約が加えられています。 2つのSetの積集合を求める際に活躍するのがretainAllメソッドです。このメソッドは、引数に渡したコレクションに含まれる要素だけを保持し、それ以外の要素を呼び出し元のSetから削除します。その結果、両方のSetに共通し
-
【Java】2つのSet(セット)の差集合を計算するプログラムの書き方
この記事では、Javaで2つのセット(Set)の差を計算する方法について解説します。Setは重複する要素を格納できないコレクションであり、数学における「集合」という概念をモデル化したものです。Setインターフェースは、Collectionインターフェースから継承したメソッドのみで構成されており、そこに「重複要素を禁止する」という制約が追加されています。2つのセットの差(A − B)とは、「Aに含まれているが、Bには含まれていない要素」だけで構成される集合のことです。JavaではremoveAll()メソッドを使うことで、この差集合を簡単に求めることができます。以下に具体的な実行例を示します。入
-
Javaでセットが別のセットのサブセットかどうかを判定する方法
この記事では、あるセット(Set)が別のセットのサブセット(部分集合)であるかどうかを判定する方法を解説します。 Setとは、重複する要素を含むことができないコレクションであり、数学における集合の概念をモデル化したものです。SetインターフェースにはCollectionインターフェースから継承されたメソッドのみが定義されており、そこに「重複要素を禁止する」という制約が追加されています。 サブセットの判定には、containsAll()メソッドを使用します。このメソッドは、引数に渡したコレクションのすべての要素が、呼び出し元のコレクションに含まれている場合にtrueを返します。 処理内容のデ