9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

オブジェクトリストの型変換が必要になりました。単純な型変換の記事は見つかったのですが、オブジェクトリストの型変換の記事は見つけられなかったので、メモとして残しておきます。

やりたいこと

オブジェクトリストの型変換

String型の「id」「displayOrder」を内包するStringModelオブジェクトがあります。このStringModelオブジェクトをint型のオブジェクトリストに変換します。

実装

まず、modelクラスを作成します。

StringModel.java
package com.example.demo.model;

public class StringModel {
	
	private String id;
	
	private String displayOrder;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getDisplayOrder() {
		return displayOrder;
	}

	public void setDisplayOrder(String displayOrder) {
		this.displayOrder = displayOrder;
	}		
}

IntModel.java
package com.example.demo.model;

public class IntModel {

	private int id;
	
	private int displayOrder;
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getDisplayOrder() {
		return displayOrder;
	}

	public void setDisplayOrder(int displayOrder) {
		this.displayOrder = displayOrder;
	}
}

準備 オブジェクトリストの作成

		// String型の値を持つオブジェクトのリストを作成
		StringModel stringModel1 = new StringModel();
		stringModel1.setId("1");
		stringModel1.setDisplayOrder("1");
		
		StringModel stringModel2 = new StringModel();
		stringModel2.setId("2");
		stringModel2.setDisplayOrder("2");
		
		StringModel stringModel3 = new StringModel();
		stringModel3.setId("3");
		stringModel3.setDisplayOrder("3");
		
		List<StringModel> stringModelList = new ArrayList<>();
		stringModelList.add(stringModel1);
		stringModelList.add(stringModel2);
		stringModelList.add(stringModel3);
		
		// 出力
		System.out.println(stringModelList.get(0).getId().getClass().getSimpleName() + " " + stringModelList.get(0).getId());
		System.out.println(stringModelList.get(0).getDisplayOrder().getClass().getSimpleName() + " " + stringModelList.get(0).getDisplayOrder());
		System.out.println(stringModelList.get(1).getId().getClass().getSimpleName() + " " + stringModelList.get(1).getId());
		System.out.println(stringModelList.get(1).getDisplayOrder().getClass().getSimpleName() + " " + stringModelList.get(1).getDisplayOrder());
		System.out.println(stringModelList.get(2).getId().getClass().getSimpleName() + " " + stringModelList.get(2).getId());
		System.out.println(stringModelList.get(2).getDisplayOrder().getClass().getSimpleName() + " " + stringModelList.get(2).getDisplayOrder());
//出力結果
String 1
String 1
String 2
String 2
String 3
String 3

「.getClass().getSimpleName()」で型を確認して出力しました。stringで作成できているようです。

型変換(String →int)

		// 型変換
		List<IntModel> intModelList = new ArrayList<>();
		for (int i = 0; i < stringModelList.size(); i++) {
			IntModel intModel = new IntModel();
			intModel.setId(Integer.parseInt(stringModelList.get(i).getId()));
			intModel.setDisplayOrder(Integer.parseInt(stringModelList.get(i).getDisplayOrder()));
			intModelList.add(intModel);
		}

型変換の部分です。型変換後、新しいオブジェクト「intModelList」に入れ直しています。ポイントは2つです。
ます、1つ目のポイントは「Integer.parseInt」でint型に変換していることです。「parse~」で型変換できます。こちらの記事に「型変換メソッド一覧」が載っていました。

2つ目のポイントは「IntModel intModel = new IntModel();」の書く場所です。for文の中に記載すると思ったような動きになります。最初はfor文の外に記載していたのですが、うまくいきませんでした。最終的にはオブジェクトリストになるので、for文の中に記載が必要でした。

型変換がうまくできているか、確認します。

		// 出力
		System.out.println(((Object)intModelList.get(0).getId()).getClass().getSimpleName() + " " + intModelList.get(0).getId());
		System.out.println(((Object)intModelList.get(0).getDisplayOrder()).getClass().getSimpleName() + " " + intModelList.get(0).getDisplayOrder());
		System.out.println(((Object)intModelList.get(1).getId()).getClass().getSimpleName() + " " + intModelList.get(1).getId());
		System.out.println(((Object)intModelList.get(1).getDisplayOrder()).getClass().getSimpleName() + " " + intModelList.get(1).getDisplayOrder());
		System.out.println(((Object)intModelList.get(2).getId()).getClass().getSimpleName() + " " + intModelList.get(2).getId());
		System.out.println(((Object)intModelList.get(2).getDisplayOrder()).getClass().getSimpleName() + " " + intModelList.get(2).getDisplayOrder());
//出力結果
Integer 1
Integer 1
Integer 2
Integer 2
Integer 3
Integer 3

String型から変換できているようです。ちなみに、「.getClass().getSimpleName()」で、プリミティブデータ型の型を調べるには、Object にキャストする必要があるようです。

型変換の全量はこちらです。

ParseController.java
package com.example.demo.controller;

import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import com.example.demo.model.StringModel;
import com.example.demo.model.IntModel;

@Controller
public class ParseController {

	public static void main(String[] args) {
		
		// String型の値を持つオブジェクトのリストを作成
		StringModel stringModel1 = new StringModel();
		stringModel1.setId("1");
		stringModel1.setDisplayOrder("1");
		
		StringModel stringModel2 = new StringModel();
		stringModel2.setId("2");
		stringModel2.setDisplayOrder("2");
		
		StringModel stringModel3 = new StringModel();
		stringModel3.setId("3");
		stringModel3.setDisplayOrder("3");
		
		List<StringModel> stringModelList = new ArrayList<>();
		stringModelList.add(stringModel1);
		stringModelList.add(stringModel2);
		stringModelList.add(stringModel3);
		
		// 出力
		System.out.println(stringModelList.get(0).getId().getClass().getSimpleName() + " " + stringModelList.get(0).getId());
		System.out.println(stringModelList.get(0).getDisplayOrder().getClass().getSimpleName() + " " + stringModelList.get(0).getDisplayOrder());
		System.out.println(stringModelList.get(1).getId().getClass().getSimpleName() + " " + stringModelList.get(1).getId());
		System.out.println(stringModelList.get(1).getDisplayOrder().getClass().getSimpleName() + " " + stringModelList.get(1).getDisplayOrder());
		System.out.println(stringModelList.get(2).getId().getClass().getSimpleName() + " " + stringModelList.get(2).getId());
		System.out.println(stringModelList.get(2).getDisplayOrder().getClass().getSimpleName() + " " + stringModelList.get(2).getDisplayOrder());
		
		// 型変換
		List<IntModel> intModelList = new ArrayList<>();
		for (int i = 0; i < stringModelList.size(); i++) {
			IntModel intModel = new IntModel();
			intModel.setId(Integer.parseInt(stringModelList.get(i).getId()));
			intModel.setDisplayOrder(Integer.parseInt(stringModelList.get(i).getDisplayOrder()));
			intModelList.add(intModel);
		}
		
		// 出力
		System.out.println(((Object)intModelList.get(0).getId()).getClass().getSimpleName() + " " + intModelList.get(0).getId());
		System.out.println(((Object)intModelList.get(0).getDisplayOrder()).getClass().getSimpleName() + " " + intModelList.get(0).getDisplayOrder());
		System.out.println(((Object)intModelList.get(1).getId()).getClass().getSimpleName() + " " + intModelList.get(1).getId());
		System.out.println(((Object)intModelList.get(1).getDisplayOrder()).getClass().getSimpleName() + " " + intModelList.get(1).getDisplayOrder());
		System.out.println(((Object)intModelList.get(2).getId()).getClass().getSimpleName() + " " + intModelList.get(2).getId());
		System.out.println(((Object)intModelList.get(2).getDisplayOrder()).getClass().getSimpleName() + " " + intModelList.get(2).getDisplayOrder());
	}
}

ひとまず、思ったように型変換できました。誰かの役に立ったら嬉しいです。

最後まで読んでいただいた方、ありがとうございました。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?