エンジニアの将来って?

現在6年目の元COBOL現Javaエンジニアが、将来への考えや勉強のアウトプット、たまに腎臓について書くブログです

【Java】eclipseにあるデバッグ機能の「値の変更」で、HashMapを変更するやり方をできるだけわかりやすく解説します

こんにちは。たいら(@tairaengineer2)です。
今回の記事は、Javaで開発する人ならだれでもお世話になるeclipseデバッグの機能の1つである「値の変更」の解説記事です。
Hashmapの「値の変更」の仕方をできるだけわかりやすく、現役Javaエンジニアのたいらが解説します。

String型の変数や配列の「値の変更」の解説は↓記事をご参照ください。

www.tairax.com

ArrayListの「値の変更」の解説は↓記事をご参照ください。

www.tairax.com

前提条件:eclipseの環境

デバッグの「値の変更」で私が解説で使うeclipseのバージョンをお伝えします。

バージョン Eclipse4.7 Oxygen

下準備

HashMapの「値の変更」の解説に使うプログラムは、keyにInteger型、valueにString型のHashMapを作り表示させるという単純なプログラムです。

Java

package hashMapSample;

import java.util.HashMap;
import java.util.Map;

/**
 * HashMapのデバッグサンプル
 *
 */
public class HashMapSample {
	public static void main(String[] args) {
		Map<Integer, String> sampleMap = new HashMap<>();
		sampleMap.put(1, "one");
		sampleMap.put(3, "three");
		sampleMap.put(2, "two");

		System.out.println("----------デバッグ前----------");
		sampleMap.entrySet().stream()
				.map(e -> e.getKey() + ":" + e.getValue())
				.forEach(System.out::println);

		System.out.println("----------デバッグ後----------");
		sampleMap.entrySet().stream()
				.map(e -> e.getKey() + ":" + e.getValue())
				.forEach(System.out::println);
		System.out.println("----------デバッグ終了----------");
	}

}

値を変更しない時の実行結果

----------デバッグ前----------
1:one
2:two
3:three
----------デバッグ後----------
1:one
2:two
3:three
----------デバッグ終了----------

当たり前ですが、「値の変更」をしてないので同じものが表示されてます。
では、「値の変更」をやっていきます。

HashMapの「値の変更」をする

ブレークポイントはここに置きます。

f:id:Tairax:20180829112025p:plain

ブレークポイントとは、通常の「実行」ではなく「デバッグ」で実行した場合、ブレークポイントで指定した行を実行する前で止まってくれるポイントです。
ブレークポイントの設定方法は、ブレークポイントを置きたい行に何行目か書いてある左でダブルクリックすれば設定できます。
今回でいうと、23行目の

sampleMap.entrySet().stream()
		.map(e -> e.getKey() + ":" + e.getValue())
		.forEach(System.out::println);

が実行される前に変更したいので、23行目にブレークポイントを設定します。

では、色んなパターンの「値の変更」をしていきます!

HashMapの「値の変更」で以下のことを説明します。

  • 新しく要素を追加する
  • keyを変更する
  • valueを変更する
  • ある要素を削除する
  • HashMapごと削除する

新しく要素を追加する

HashMapに新しく要素を追加しましょう!
eclipseの上部にある「実行」タブに「デバッグ」があるのでそこをクリック。

f:id:Tairax:20180829193114p:plain

クリックすると、↓のように開きます。

f:id:Tairax:20180829193435p:plain

その中にタブに「デバッグ」、「Javaアプリケーション」の順にクリック。

f:id:Tairax:20180829202948p:plain

するとブレークポイントの指定した通りに止まってくれます。

f:id:Tairax:20180829204234p:plain

もちろん中断中なので、画面に出力していません。

では「値の変更」をしていきます。
ブレークポイントで中断しているとデバッグ画面になり、画面右上に「変数」タブ、「ブレークポイント」タブ、「式」タブがあります。

f:id:Tairax:20180829204700p:plain

そこで「変数」タブを選択。

f:id:Tairax:20180830094807p:plain

ここでは今宣言されている変数の状態を見ることができます。

今のsampleMapの中身を見てみます。
見るときは、sampleMapを左クリック。

f:id:Tairax:20180830095122p:plain

今はまだ「値の変更」をしてないので、sampleMapの中身は

{1=one, 2=two, 3=three}

です。

では、新しく要素を追加しましょう!
「式」タブを選択。

f:id:Tairax:20180830094559p:plain

ここで新たな式を書くことで、値を変更することが出来ます!
「新しい式を追加する」を左クリック。

f:id:Tairax:20180830095938p:plain

すると、カーソルがクリックした欄に行き、入力できるようになります。
新しく要素を追加する式を書きましょう!

f:id:Tairax:20180830100350p:plain

sampleMap.put(4,"four")

HashMapに新しく要素を追加するputメソッドで追加してやればOKです!
入力したあと、エンターキーを押します。

f:id:Tairax:20180830100815p:plain

このように追加されました!
本当に追加されているか、「変数」タブを開いてsampleMapの中身を確認してみましょう。

f:id:Tairax:20180830101035p:plain

要素は新しく追加されました!

では、ずっと止めていた処理を再開しましょう。
再開するやり方はF8ボタンかまたは

f:id:Tairax:20180830101523p:plain

赤枠で囲っている再開ボタンを押します。
この再開ボタンは、次のブレークポイントまで一気に処理が進みます。
なのでこのプログラムでは次のブレークポイントが無いので、プログラムの最後まで処理が進みます。
では、再開ボタンを押してみます!

f:id:Tairax:20180830101807p:plain

すると処理が終わり、変更した通りの値が表示されました!

以上が、新しく要素を追加するやり方です。

keyを変更する

次はkeyを変更してみましょう。

先ほどと同じようにデバッグします。
ブレークポイントを指定した行の実行前で止まるところまでは同じです。

f:id:Tairax:20180829193114p:plain

クリックして

f:id:Tairax:20180829193435p:plain

その中にタブに「デバッグ」、「Javaアプリケーション」の順にクリック。

f:id:Tairax:20180829202948p:plain

ブレークポイントの指定した通りに止まります。

f:id:Tairax:20180829204234p:plain

ここから違います。
「変数」タブを開きます。

f:id:Tairax:20180830150846p:plain

当たり前ですが、まだ何もいじっていないので変わっていません。
sampleMapを左クリック。

f:id:Tairax:20180830151223p:plain

このように、sampleMapに格納されている要素を1つずつ確認することが出来ます。

今回は[2]のkeyを変更してみましょう。
[2]を左クリック。

f:id:Tairax:20180830151707p:plain

このようにkeyとvalueが格納されています。
さらにkeyを左クリック。

f:id:Tairax:20180830152202p:plain

すると、keyに何が入っているか見えるようになりました!
この状態で右クリックします。

f:id:Tairax:20180830152706p:plain

その中の「値の変更」を左クリック。

f:id:Tairax:20180830152955p:plain

すると、こんな画面がポップアップします。
ポップアップした画面の欄を見てみると、もともとのkeyの値である3が入力されています。
では、ここに5を入力してみましょう。

f:id:Tairax:20180830153346p:plain

「OK」ボタンを押します。

f:id:Tairax:20180830164738p:plain

keyの変更ができました!

では、ずっと止めていた処理を再開しましょう。
先ほどと同じように

f:id:Tairax:20180830101523p:plain

F8ボタンか赤枠で囲っている再開ボタンを押します。

f:id:Tairax:20180830165107p:plain

keyの値の変更ができました!

以上が、keyの値を変更するやり方です。

valueを変更する

今度はvalueを変更してみましょう。

先ほどと同じようにデバッグします。
ブレークポイントを指定した行の実行前で止まるところまでは同じです。

f:id:Tairax:20180829193114p:plain

クリックして

f:id:Tairax:20180829193435p:plain

その中にタブに「デバッグ」、「Javaアプリケーション」の順にクリック。

f:id:Tairax:20180829202948p:plain

ブレークポイントの指定した通りに止まります。

f:id:Tairax:20180829204234p:plain

「式」タブを開きます。

f:id:Tairax:20180830094559p:plain

「新しい式を追加する」を左クリック。

f:id:Tairax:20180830095938p:plain

新しく要素を追加する式を書きます。
今回は、keyが2の[two]を[twotwo]に変更します。

f:id:Tairax:20180830165944p:plain

sampleMap.put(2,"twotwo")

入力してエンターキーを押します。

f:id:Tairax:20180830170309p:plain

putメソッドを使って、valueの値を変更することが出来ました!
本当に変更できているか、「変数」タブを開いてsampleMapの中身を確認してみましょう。

f:id:Tairax:20180830170635p:plain

valueの変更ができていますね!

では、ずっと止めていた処理を再開しましょう。
先ほどと同じように

f:id:Tairax:20180830101523p:plain

F8ボタンか赤枠で囲っている再開ボタンを押します。

f:id:Tairax:20180830170921p:plain

無事変更されたvalueで表示されました!

以上が、valueを変更するやり方です。

ある要素を削除する

今度は要素を削除してみましょう。

先ほどと同じようにデバッグします。
ブレークポイントを指定した行の実行前で止まるところまでは同じです。

f:id:Tairax:20180829193114p:plain

クリックして

f:id:Tairax:20180829193435p:plain

その中にタブに「デバッグ」、「Javaアプリケーション」の順にクリック。

f:id:Tairax:20180829202948p:plain

ブレークポイントの指定した通りに止まります。

f:id:Tairax:20180829204234p:plain

「式」タブを開きます。

f:id:Tairax:20180830094559p:plain

「新しい式を追加する」を左クリック。

f:id:Tairax:20180830095938p:plain

ある要素を削除する式を書きます。
今回は、keyが2の要素を削除します。

f:id:Tairax:20180901141016p:plain

sampleMap.remove(2)

HashMapの要素を削除するremoveメソッドを使います。

入力してエンターキーを押します。

f:id:Tairax:20180901142157p:plain

無事削除できました!
本当に削除できているか、「変数」タブを開いてsampleMapの中身を確認してみましょう。

f:id:Tairax:20180901142526p:plain

ちゃんと削除されていますね!

では、ずっと止めていた処理を再開しましょう。
先ほどと同じように

f:id:Tairax:20180830101523p:plain

F8ボタンか赤枠で囲っている再開ボタンを押します。

f:id:Tairax:20180901142858p:plain

無事削除された要素は表示されませんでした!

以上が、ある要素を削除するやり方です。

HashMapごと削除する

最後はHashMapごと削除してみましょう。

先ほどと同じようにデバッグします。
ブレークポイントを指定した行の実行前で止まるところまでは同じです。

f:id:Tairax:20180829193114p:plain

クリックして

f:id:Tairax:20180829193435p:plain

その中にタブに「デバッグ」、「Javaアプリケーション」の順にクリック。

f:id:Tairax:20180829202948p:plain

ブレークポイントの指定した通りに止まります。

f:id:Tairax:20180829204234p:plain

「式」タブを開きます。

f:id:Tairax:20180830094559p:plain

「新しい式を追加する」を左クリック。

f:id:Tairax:20180830095938p:plain

HashMapを削除する式を書きます。

f:id:Tairax:20180901143642p:plain

sampleMap.clear()

HashMapごと削除するclearメソッドを使います。

入力してエンターキーを押します。

f:id:Tairax:20180901144117p:plain

無事削除できました!
本当に削除できているか、「変数」タブを開いてsampleMapの中身を確認してみましょう。

f:id:Tairax:20180901144315p:plain

ちゃんと削除されていますね!

では、ずっと止めていた処理を再開しましょう。
先ほどと同じように

f:id:Tairax:20180830101523p:plain

F8ボタンか赤枠で囲っている再開ボタンを押します。

f:id:Tairax:20180901144542p:plain

表示されませんでしたね!

以上が、hashMapを削除するやり方です。

まとめ

以上が、eclipseでHashMapをデバッグで「値の変更」をするやり方です。
いかがでしたか?あなたのご参考になれば幸いです。

ではでは~(・ω・)ノシ

 

ほかにも勉強記事を書いてます。
よければご参考ください。

今までブログで書いたJavaのアウトプット記事のまとめ

【Java】標準入力から判定して、じゃんけんゲームをするプログラム

【Java8】filterメソッドを解説【ラムダ式】