요즘 프로그래머스 코딩테스트를 많이 풀고 있다.
코테를 풀면서 많이 쓰는 것 중 하나가 배열인데
배열을 사용하기 불편한 경우! 난 주로 어레이리스트를 선언해 사용한다.
오늘은 이 리스트에 대해 알아보자
리스트란
리스트(List)는 배열과 비슷하지만 리스트에 비해 편리하고 기능이 더 많은 자료형이다.
배열은 크기를 정하면 바꿀 수 없지만 리스트는 그딴 거 없다. 넣는대로 들어간다.
[프로그래머스] 명예의 전당 (1) (JAVA)
https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
commit.tistory.com
여기서도 보면 어레이리스트를 사용하는데 크기를 정하진 않는다
ArrayList
내가 자료형에서 가장 애용하는 ArrayList에 대해 알아볼 것이다.
참고로 리스트 자료형에는 ArrayList 말고도 Vector, LinkedList 등이 있다.
리스트의 기능
값 추가(add)
add 메소드를 사용하면 리스트에 값을 추가할 수 있다.
import java.util.ArrayList;
class prac {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 리스트에 1 추가
list.add(2); // 리스트에 2 추가
list.add(1, 3); // 1번 인덱스에 3 추가
}
}
먼저 어레이리스트를 사용하려면 상단의 import java.util.ArrayList;처럼 import문을 작성해야 한다.
하지만 import java.util.*;를 해버리면 java.util 패키지 안의 모든 클래스와 인터페이스가 import된다.
list.add(추가하고자 하는 값);
이렇게 사용한다.
만약 내가 원하는 인덱스에 값을 추가하고 싶다면
list.add(원하는 인덱스, 추가하고자 하는 값);
이렇게 사용한다. (인덱스는 0부터 시작)
값 추출(get)
import java.util.ArrayList;
class prac {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 리스트에 1 추가
list.add(2); // 리스트에 2 추가
list.add(1, 3); // 1번 인덱스에 3 추가
System.out.println(list.get(0)); //0번 인덱스 추출
}
}
출력
1
어레이리스트에서 특정 인덱스의 값을 추출하고 싶을 때 사용한다.
크기 추출(size)
import java.util.ArrayList;
class prac {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 리스트에 1 추가
list.add(2); // 리스트에 2 추가
System.out.println(list.size());
}
}
출력
2
어레이리스트의 크기(요소의 개수)를 추출한다.
항목 포함 판별(contains)
import java.util.ArrayList;
class prac {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 리스트에 1 추가
list.add(2); // 리스트에 2 추가
System.out.println(list.contains(1));
}
}
출력
true
어레이리스트에 값이 포함되어 있는지 판별하여 true || false로 반환한다.
위의 list에는 1이 포함되어있기 때문에 true를 반환한다.
값 삭제(remove)
remove에는 두가지 방식이 있다.
- remove(객체)
System.out.println(list.remove("1"));
첫번째 방식은 객체를 지우는 방식이다.
리스트에서 동일한 값을 찾아 그 객체에 해당하는 항목을 삭제한 뒤 삭제에 성공하면 true 실패하면 false를 반환한다.
- remove(인덱스)
System.out.println(list.remove(0));
두번째 방식은 인덱스를 골라 지우는 방식이다.
리스트에서 인덱스에 해당하는 항목을 삭제한 뒤, 삭제된 값을 반환한다.
정렬하기
- 오름차순 정렬
import java.util.ArrayList;
import java.util.Collections;
public class P1 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
System.out.println(list);
Collections.sort(list); //오름차순
System.out.println(list);
}
}
출력
[1, 3, 2]
[1, 2, 3]
Collections.sort() 메소드를 이용해 어레이리스트의 정렬을 할 수가 있다.
- 내림차순 정렬
import java.util.ArrayList;
import java.util.Collections;
public class P1 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
System.out.println(list);
Collections.sort(list, Collections.reverseOrder()); //내림차순
System.out.println(list);
}
}
출력
[1, 3, 2]
[3, 2, 1]
Collections.sort() 메소드에 매개변수로 Comparator 인자를 전달해야 한다.
위처럼 매개변수에 Collections.reverseOrder()을 사용해 내림차순 정렬을 할 수가 있다.
출처 - 점프 투 자바
03-07 리스트
리스트(List)는 배열과 비슷하지만 편리한 기능이 더 많은 자료형이다. 리스트와 배열의 가장 큰 차이점은, 배열은 크기가 정해져 있지만 리스트는 변한다는 데 있다. 예를 들어 …
wikidocs.net
'자료구조' 카테고리의 다른 글
[자료구조] 맵 (1) | 2024.04.04 |
---|---|
[자료구조] 스택과 큐 (2) | 2024.03.24 |