봄디의 개발일지
[JAVA] ArrayList 자주 사용하는 메소드 (List/LinkedList) 본문
ArrayList 에 대한 설명은 아래의 게시물에서 확인할 수 있습니다.
2024.10.06 - [자바] - [JAVA] 컬렉션 - List 정리 (ArrayList, LinkedList)
이 글에서는 ArrayList 로 예를 들어 설명하지만 List 인터페이스의 주요 메서드이며 LinkedList 에서도 동일하게 사용 가능합니다.
1️⃣ ArrayList 메소드 정리
- add (E e)
- add (int index, E element)
- get (int index)
- set (int index, E element)
- remove (int index)
- indexOf (Object o)
- lastIndexOf (Object o)
- contains(Object o)
- size()
- isEmpty()
- clear()
✅ add (E e) : 리스트의 끝에 지정된 요소를 추가한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list); // [1,2,3]
}
위의 코드와 같이 add 할 경우, 뒤에서부터 차례대로 1,2,3 의 값이 들어가는 것을 확인할 수 있습니다.
✅ add (int index, E element) : 리스트의 지정된 위치에 요소를 삽입한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(2, 10); //인덱스 2의 위치에 10을 추가 [1, 2, 10, 3]
list.add(0, 20); //인덱스 0의 위치에 20을 추가 [20, 1, 2, 10, 3]
System.out.println(list); // [20, 1, 2, 10, 3]
}
단순히 맨 뒤에 추가할 수 있는 add 와는 다르게 인덱스의 위치를 지정해서 값을 추가해줄 수 있습니다.
✅ get (int index) : 리스트에서 지정된 위치의 요소를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(2, 10); //인덱스 2의 위치에 10을 추가 [1, 2, 10, 3]
list.add(0, 20); //인덱스 0의 위치에 20을 추가 [20, 1, 2, 10, 3]
System.out.println(list.get(2)); //인덱스 2의 위치에 있는 값 반환 2
System.out.println(list.get(0)); //인덱스 0의 위치에 있는 값 반환 20
}
해당 인덱스에 저장되어 있는 값을 반환합니다.
위의 예에서는 list 에 [20, 1, 2, 10, 3] 이 들어있기 때문에 인덱스 2 위치에 있는 2 와 인덱스 0 위치에 있는 20을 반환합니다.
get 은 단순히 값만 반환할 뿐 list 에 값에는 영향을 주지 않습니다.
✅ set (int index, E element) : 지정된 위치의 요소를 변경하고, 이전 요소를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5); // [1, 2, 3, 4, 5]
int number = list.set(0, 30);
System.out.println(number); // 1
System.out.println(list); //[30, 2, 3, 4, 5]
}
기존 list 에는 [1, 2, 3, 4, 5] 가 들어가있는데, set 을 통해서 기존 0번 인덱스의 값을 30으로 바꾸고
원래 0번 인덱스에 있었던 값인 1을 반환합니다.
따라서 number 에는 1 의 값이 들어있고, list 는 [30, 2, 3, 4, 5] 로 변하게 됩니다.
✅ remove (int index) : 리스트에서 지정된 위치의 요소를 제거하고 그 요소를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5); // [1, 2, 3, 4, 5]
int number = list.remove(1);
System.out.println(number); // 2
System.out.println(list); //[1, 3, 4, 5]
}
remove() 는 지정한 인덱스 위차에 있는 값을 삭제하고, 반환합니다.
따라서 number 에는 인덱스 1의 위치에 있던 2 를 제거하고 반환합니다.
최종적으로 list 는 [1, 3, 4, 5] 로 변하게 됩니다.
✅ indexOf (Object o) : 리스트에서 지정된 요소의 첫 번째 인덱스를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(30);
list.add(30);
list.add(40);
list.add(50); // [10, 20, 30, 30, 30, 40, 50]
int number = list.indexOf(30);
System.out.println(number); // 2
System.out.println(list); // [10, 20, 30, 30, 30, 40, 50]
}
list 에는 30이라는 값이 3개가 존재하지만, indexOf () 는 지정된 요소의 첫 번째 인덱스를 반환하므로
제일 먼저 30이 있는 위치인 인덱스 2가 반환되는 것을 확인할 수 있습니다.
indexOf () 는 인덱스의 위치만 반환할 뿐 list 내부 값의 변화는 없습니다.
✅ lastIndexOf (Object o) : 리스트에서 지정된 요소의 마지막 인덱스를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(30);
list.add(30);
list.add(40);
list.add(50); // [10, 20, 30, 30, 30, 40, 50]
int number = list.lastIndexOf(30);
System.out.println(number); // 4
System.out.println(list); // [10, 20, 30, 30, 30, 40, 50]
}
lastIndexOf () 는 지정된 요소의 마지막 인덱스를 반환합니다. 30 이라는 값은 인덱스 2,3,4 번에 존재하므로 lastIndexOf(30) 을 할 경우에는 마지막 인덱스인 4를 리턴하는 것을 확인할 수 있습니다.
✅ contains (Object o) : 리스트가 지정된 요소를 포함하고 있는지 여부를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
boolean check = list.contains(4);
System.out.println(check); // true
check = list.contains(10);
System.out.println(check); //false
}
list 에는 4 라는 값이 존재하므로 contains() 를 실행할 경우 true 가 나오는 것을 확인할 수 있습니다.
반면에, list 는 10 이라는 값이 없으므로 contains() 를 실행하면 false 가 나오게 됩니다.
✅ size () : 리스트의 요소 수를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(40);
list.add(50); // [10, 20, 30, 40, 50]
int size = list.size();
System.out.println(size); // 5
}
size() 는 리스트의 있는 요소 수를 반환합니다.
만약, 리스트에 아무 값도 들어가있지 않은 상태라면 0 을 반환합니다.
✅ isEmpty() : 리스트가 비어있는지의 여부를 반환한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
boolean check = list.isEmpty();
System.out.println(check); //true
list.add(1);
list.add(2);
list.add(3);
check = list.isEmpty();
System.out.println(check); //false
}
처음에 list 에 아무 값도 넣지 않고 isEmpty() 를 호출했을 때는 list 가 비어있으므로 true 를 리턴하는 것을 확인할 수 있습니다.
후에, list 에 값을 3개를 추가하고 isEmpty() 를 호출하면 list 에 값이 있으므로 false 를 리턴하는 것을 확인할 수 있습니다.
✅ clear() : 리스트에서 모든 요소를 제거한다.
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.clear();
System.out.println(list); // []
}
list 에 값을 5개를 넣고 clear() 를 실행할 경우 모든 요소를 제거하므로 list 에는 아무 값도 남아있지 않는 것을 확인할 수 있습니다.
🔍 참고글
인프런 [김영한의 실전 자바 - 중급 2편] 섹션 6 컬렉션 프레임워크 - List 강의를 참고하여 작성했습니다.
'자바' 카테고리의 다른 글
[JAVA] Set 의 주요 메서드 정리 (6) | 2024.10.27 |
---|---|
[JAVA] Set 총 정리 (HashSet, LinkedHashSet, TreeSet) (0) | 2024.10.27 |
[JAVA] 컬렉션 - List 정리 (ArrayList, LinkedList) (3) | 2024.10.06 |
[JAVA] 자바 메모리 구조 (2) | 2024.09.15 |
[Intellij] 인텔리제이 자주 사용하는 단축키 모음 (윈도우) (3) | 2024.09.08 |