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 |