공부/java2014. 9. 23. 16:59


이번 예제에서는 java.util.List 인터페이스에 있는 두가지 메소드인 E remove(int index)boolean remove(Object o) 에 대해 알아 보겠습니다. 

  • E remove(int index)

- list 내의 지정된 인덱스 위치에 있는 object 를 제거합니다.

  • boolean remove(Object o)

- 지정된 object 가 list 내에 존재하면 존재하는 첫번째 항목을 제거합니다.

- 이 메소드는 list 내에 존재하는 object 들과 equals() 메소드로 비교하여 제거 합니다.

두가지 메소드에 대한 예제를 살펴보겠습니다.

먼저 두 예제에서 공통으로 사용할 User 클래스 입니다.

User 클래스

package kr.co.leehana.example.listremove;

public class User {
	private String firstname;
	private String lastname;

	public User(String firstname, String lastname) {
		this.firstname = firstname;
		this.lastname = lastname;
	}

	@Override
	public String toString() {
		return "User [firstname=" + firstname + ", lastname=" + lastname + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((firstname == null) ? 0 : firstname.hashCode());
		result = prime * result
				+ ((lastname == null) ? 0 : lastname.hashCode());
		return result;
	}

	// firstname 과 lastname 이 같을때에만 동일하다고 판단.
	// 이클립스에서 자동으로 생성해주는 방법을 사용.
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (firstname == null) {
			if (other.firstname != null)
				return false;
		} else if (!firstname.equals(other.firstname))
			return false;
		if (lastname == null) {
			if (other.lastname != null)
				return false;
		} else if (!lastname.equals(other.lastname))
			return false;
		return true;
	}
}

E remove(int index)

package kr.co.leehana.example.listremove;

import java.util.ArrayList;
import java.util.List;

public class ListRemoveIndexExample {

	public static void main(String[] args) {
		List strList = new ArrayList();
		strList.add("one");
		strList.add("two");
		strList.add("three");

		for (String str : strList)
			System.out.println(str);

		strList.remove(1); // two 제거
		System.out.println("## String 리스트에서 1번째 인덱스의 object 를 제거 한 뒤 ###");

		for (String str : strList)
			System.out.println(str);
		
		System.out.println();

		List userList = new ArrayList();
		userList.add(new User("Tom", "Hawk"));
		userList.add(new User("홍", "길동"));
		userList.add(new User("Michael", "Jordan"));

		for (User user : userList)
			System.out.println(user);

		userList.remove(0);

		System.out.println("### User 리스트로부터 0번째 인덱스의 object 를 제거 한 뒤 ###");
		for (User user : userList)
			System.out.println(user);
	}
}

boolean remove(Object o)

package kr.co.leehana.example.listremove;

import java.util.ArrayList;
import java.util.List;

public class ListRemoveObjectExample {

	public static void main(String[] args) {
		List strList = new ArrayList();
		strList.add("one");
		strList.add("two");
		strList.add("three");

		for (String str : strList)
			System.out.println(str);

		strList.remove("two"); // two 제거
		System.out.println("## String 리스트에서 two object 를 제거 한 뒤 ###");

		for (String str : strList)
			System.out.println(str);

		System.out.println();

		List userList = new ArrayList();
		userList.add(new User("Tom", "Hawk"));
		userList.add(new User("홍", "길동"));
		userList.add(new User("Michael", "Jordan"));

		for (User user : userList)
			System.out.println(user);

		userList.remove(new User("홍", "길동"));

		System.out.println("### User 리스트로부터 홍길동 object 를 제거 한 뒤 ###");
		for (User user : userList)
			System.out.println(user);

	}
}

위 예제에서는 User object 를 ArrayList 에 넘겨 해당하는 object 를 삭제 하였습니다. 이 예제에서 주목해야 할 중요한 점은 List 의 remove(Object o) 메소드가 제대로 동작하게 만들기 위해 User 클래스에서 equals() 메소드를 오버라이드 했다는 점입니다.





예제

출처


'공부 > java' 카테고리의 다른 글

Java ByteArrayInputStream 예제  (0) 2014.09.23
Java BufferedInputStream 예제  (0) 2014.09.23
java.lang.System 예제  (0) 2014.09.22
Java BufferedOutputStream 예제  (0) 2014.09.22
Java BufferedWriter 예제  (0) 2014.09.06
Posted by #HanaLee