java 에서 많이 사용하는 java.util.List 객체를 일반 배열로 변환 하는 방법에 대한 예제 입니다.
java.util.List 에는 이를 위해 두가지의 메소드가 존재 합니다.
이 두가지 메소드들은 적절한 순서로 java.util.List 에 담겨 있는 모든 요소를 포함하는 배열을 반환합니다.
두 메소드의 시그네쳐에서 확인 할 수 있듯이 두 메소드의 차이는 첫번째는 런타임에 지정된 (T[]) 배열을 반환하고, 두번째는 Object[] 유형의 배열을 반환 한다는 것입니다.
두가지 모두의 예를 한번 살펴 보겠습니다.
먼저 두개의 예제에서 공통으로 사용할 User 클래스를 만들겠습니다.
User 클래스
package kr.co.leehana.example.listtoarray; public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return this.name; } public int getAge() { return this.age; } }
T[] toArray(T[] a) 예제
package kr.co.leehana.example.listtoarray; import java.util.ArrayList; import java.util.List; public class ListToArrayExampleWithArgument { public static void main(String[] args) { runExample(); runExample2(); } private static void runExample() { List<String> strList = new ArrayList<String>(); strList.add("One"); strList.add("Two"); strList.add("Three"); String[] strArray = strList.toArray(new String[strList.size()]); for (int i = 0; i < strArray.length; i++) { System.out.println("output : " + strArray[i]); } } private static void runExample2() { List<User> userList = new ArrayList<User>(); userList.add(new User("Hana Lee", 37)); userList.add(new User("Gildong Hong", 41)); User[] userArray = userList.toArray(new User[userList.size()]); for (int i = 0; i < userArray.length; i++) { System.out.println("User name : " + userArray[i].getName()); System.out.println("User age : " + userArray[i].getAge()); } } }
위의 예제에서는 cast 를 하지 않았다는것을 확인 하세요. 반환되는 형식이 바로 매개변수로 넘긴 형식이 됩니다. 이 방법은 cast 를 줄이고 런타임에 반환되는 배열의 형태를 결정 할 때 사용될 수 있습니다.
Object[] toArray() 예제
package kr.co.leehana.example.listtoarray; import java.util.ArrayList; import java.util.List; public class ListToArrayExampleWithNoneArgument { public static void main(String[] args) { runExample(); runExample2(); } private static void runExample() { List<String> strList = new ArrayList<String>(); strList.add("One"); strList.add("Two"); strList.add("Three"); Object[] objArray = strList.toArray(); for (int i = 0; i < objArray.length; i++) { System.out.println("output : " + objArray[i].toString()); } } private static void runExample2() { List<User> userList = new ArrayList<User>(); userList.add(new User("Hana Lee", 37)); userList.add(new User("Gildong Hong", 41)); Object[] objArray = userList.toArray(); for (int i = 0; i < objArray.length; i++) { User user = (User) objArray[i]; System.out.println("User name : " + user.getName()); System.out.println("User age : " + user.getAge()); } } }
위의 예제는 반환된 Object[] 배열을 String[] 으로 바로 변환 할 수 없기 때문에 Object[] 배열로 부터 요소를 꺼낸뒤 toString 메소드를 호출 해줍니다. 물론 그냥 String 이기 때문에 직접 호출 한다고 해도 큰 문제는 없습니다.
그리고 두번째 User 객체를 이용하여 출력 하는 메소드에서는 출력을 위해 User 객체로 cast 를 해야 한다는것을 확인하세요.
소스 코드
출처
'공부 > java' 카테고리의 다른 글
Java BufferedOutputStream 예제 (0) | 2014.09.22 |
---|---|
Java BufferedWriter 예제 (0) | 2014.09.06 |
Java FileWriter 예제 (0) | 2014.09.05 |
RejectedExecutionException 해결 방법 알아보기 (0) | 2014.09.03 |
예외 (0) | 2014.06.20 |