エンジニアの将来って?

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

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

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

目次

下準備

ArrayListの「値の変更」の解説に使うプログラムはこちら。

Java

package debugSample;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * デバッグでArrayListの「値を変更する」を練習するクラス
 */
public class ArrayListDebugSample {
	public static void main(String[] args) {

		List<String> debugList = new ArrayList<String>(Arrays.asList("Japan", "America", "France"));

		System.out.println("---値を変更する前---");
		debugList.stream().forEach(debug -> System.out.println(debug));

		System.out.println("---値を変更した後---");
		debugList.stream().forEach(debug -> System.out.println(debug));
	}
}

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

---値を変更する前---
Japan
America
France
---値を変更した後---
Japan
America
France

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

ArrayListを「値の変更」する

では値の変更をしていきます。
ブレークポイントはここに置きます。

f:id:Tairax:20180423231031p:plain

ブレークポイントの設定方法は、ブレークポイントを置きたい行に何行目か書いてある左でダブルクリックすれば設定できます。
今回でいうと、19行目の

debugList.stream().forEach(debug -> System.out.println(debug));

が実行される前に変更したいので、19行目以下にブレークポイントを設定すればOKです。
今回は18行目に設定します。

eclipseの上部にある「実行」タブに「デバッグ」があるのでそこをクリック。

f:id:Tairax:20171207123443p:plain

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

f:id:Tairax:20180423231843p:plain

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

f:id:Tairax:20180423232042p:plain

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

f:id:Tairax:20180423232547p:plain

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

f:id:Tairax:20180424071326p:plain

ここでは今宣言されている変数の状態を見ることができます。
今のdebugListの中身を見てみます。
見るときは、debugListを左クリック。

f:id:Tairax:20180424071709p:plain

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

[Japan, America, France]

です。

では、「値の変更」をしていきます。
debugListの上で右クリックをします。
すると、「値の変更」をいう項目があるのでそれを左クリックで選択します。

f:id:Tairax:20180424072256p:plain

このような画面が現れます。
ここでdebugListの「値の変更」をします。

f:id:Tairax:20180424072758p:plain

new ArrayList<String>(Arrays.asList("Italian", "Canada", "Germany"))

というように入力します。
その状態でOKボタンをクリックします。

f:id:Tairax:20180424073014p:plain

debugListの中身が変更されました!
この状態でF8ボタンかまたは

f:id:Tairax:20180424073226p:plain

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

f:id:Tairax:20180424073534p:plain

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

もちろん「値の変更」をする前のArrayListの長さと変わっても全然OKです。
たとえば

f:id:Tairax:20180424155602p:plain

new ArrayList<String>(Arrays.asList("China"))

というように長さを短くして実行しても

f:id:Tairax:20180424155810p:plain

---値を変更する前---
Japan
America
France
---値を変更した後---
China

というように表示されます。

また長さを長くしても

f:id:Tairax:20180424160423p:plain

new ArrayList<String>(Arrays.asList("India", "Thailand", "Turkey","Mexico","Indonesia"))

f:id:Tairax:20180424160627p:plain

---値を変更する前---
Japan
America
France
---値を変更した後---
India
Thailand
Turkey
Mexico
Indonesia

このように変更した通りに表示されます。

ポイント

値の変更するために

new ArrayList<String>(Arrays.asList("Italian", "Canada", "Germany"))

と入力しました。なので

import java.util.Arrays;

というimport文が必要なのがポイントです。
このimport文があることで

Arrays.asList

のメソッドを使うことができます。
もしこのimport文がない場合

f:id:Tairax:20180424161725p:plain

new ArrayList<String>(java.util.Arrays.asList("Ireland"))

というようにArraysの前にjava.util.を入れてやればOKです!

まとめ

以上がeclipseでArrayListの「値の変更」のやり方です。
いかがでしたか?ご参考になれば幸いです。

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

 

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

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

eclipseのデバッグ機能の「値の変更」をできるだけわかりやすく解説してみた

Java8で追加されたラムダ式のflatMapメソッドを使ってみる