이번 예제에서는 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) { ListstrList = 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) { ListstrList = 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 |