공부/java2014. 9. 5. 12:46

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
Posted by #HanaLee