オブジェクトリストの型変換が必要になりました。単純な型変換の記事は見つかったのですが、オブジェクトリストの型変換の記事は見つけられなかったので、メモとして残しておきます。
やりたいこと
オブジェクトリストの型変換
String型の「id」「displayOrder」を内包するStringModelオブジェクトがあります。このStringModelオブジェクトをint型のオブジェクトリストに変換します。
実装
まず、modelクラスを作成します。
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;
}
}
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 にキャストする必要があるようです。
*
型変換の全量はこちらです。
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());
}
}
ひとまず、思ったように型変換できました。誰かの役に立ったら嬉しいです。
最後まで読んでいただいた方、ありがとうございました。