■ List <=> 配列に変換するには
// List => 配列 List<SampleClass> list1 = new ArrayList<>(); SampleClass[] classes = list1.toArray(new SampleClass[list1.size()]); // 配列 => List SampleClass[] samples = new SampleClass[3]; List<SampleClass> list2 = Arrays.asList(samples);
■ 使用上の注意
★重要★ Arrays.asList で作った List に対して add した際にExceptionが発生する可能性がある 詳細は、以下の関連記事を参照のこと。http://blogs.yahoo.co.jp/dk521123/33322677.html
参考文献
http://javatechnology.net/java/array-list/
■ サンプル
* ジェネリックを使って、変換処理を共通化。http://blogs.yahoo.co.jp/dk521123/32099558.html
* 以下のサイトが役立った。多謝。http://d.hatena.ne.jp/srkzhr/20090926/1253938374
SampleClass.java
配列/Listで使用するサンプル・オプジェクトimport java.util.Calendar; public class SampleClass { public long id; public String name; public Calendar dateTime; public SampleClass(long id, String name, Calendar dateTime) { this.id = id; this.name = name; this.dateTime = dateTime; } }
Converter.java
import java.lang.reflect.Array; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.List; public class Converter { public static void main(String[] args) { SampleClass sample1 = new SampleClass(1L, "Mike", Calendar.getInstance()); SampleClass sample2 = new SampleClass(2L, "Tom", Calendar.getInstance()); SampleClass sample3 = new SampleClass(3L, "Smith", Calendar.getInstance()); List<SampleClass> sampleClazz = new ArrayList<SampleClass>() { { add(sample1); add(sample2); add(sample3); } }; SampleClass[] resultArrayClazz = Converter.toArray(sampleClazz); SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); for (SampleClass result : resultArrayClazz) { System.out.println("ID : " + result.id); System.out.println("Name : " + result.name); System.out.println("DateTime : " + dateFormatter.format(result.dateTime.getTime())); } System.out.println("************************"); List<SampleClass> resultListClazz = Converter.toList(resultArrayClazz); for (SampleClass result : resultListClazz) { System.out.println("ID : " + result.id); System.out.println("Name : " + result.name); System.out.println("DateTime : " + dateFormatter.format(result.dateTime.getTime())); } } @SuppressWarnings("unchecked") public static <T> T[] toArray(List<T> targetValues) { if (targetValues == null || targetValues.size() <= 0) { return null; } Class<?> targetClazz = targetValues.get(0).getClass(); T[] returnValues = (T[]) Array.newInstance(targetClazz, targetValues.size()); int i = 0; for (T value : targetValues) { returnValues[i] = value; i++; } return returnValues; } public static <T> List<T> toList(T[] targetValues) { if (targetValues == null) { Collections.emptyList() } return Arrays.asList(targetValues); } }
出力結果
ID : 1 Name : Mike DateTime : 2016/07/13 22:07:56.136 ID : 2 Name : Tom DateTime : 2016/07/13 22:07:56.163 ID : 3 Name : Smith DateTime : 2016/07/13 22:07:56.163 ************************ ID : 1 Name : Mike DateTime : 2016/07/13 22:07:56.136 ID : 2 Name : Tom DateTime : 2016/07/13 22:07:56.163 ID : 3 Name : Smith DateTime : 2016/07/13 22:07:56.163