이번 예제에서는 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 |