반응형
안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Array(배열)과 ArrayList의 차이, 그리고 정렬(Sort)입니다.
intro
백준, 프로그래머스, 코드업 과 같은 문제를 풀다보면 배열
이나 리스트
를 사용해야 될때가 항상 있다.
하지만 그 차이를 모른다면 비슷한 용도로 사용 되기 때문에 자칫 혼동 되기 쉽다.
때문에 이 차이점에 대해서 간략히 설명하고, 그 중 ArrayList(리스트)의 정렬 기능에 대해서도 안내하고자 한다.
Array(배열)
- 장점
- 인덱스를 통한 검색이 용이하다.
- 연속적이므로 메모리 관리가 편하다.
- 단점
- 크기가 고정되어 있기 때문에 특정 엘리먼트가 삭제되면, 해당 index자리를 빈 공간으로 남겨두기 때문에 메모리가 낭비 될 수 있다.
- 배열의 크기를 컴파일 이전에 지정해주어야 한다.
- 컴파일 이후에는 배열의 크기를 변동 할 수 없다.
List(리스트)
- 장점
- 빈 공간을 허용하지 않기 때문에 메모리의 빈틈이 없다.
- 동적임으로 크기가 정해져 있지 않다.
- 특정 데이터는 다음 데이터의 위치를 기억하고 있어, 삽입/삭제가 용이하다.
- 단점
- 검색(조회) 성능이 좋지 않다.
결론
- 위와 같은 장점/단점 때문에 그 특징에 맞게 용도를 생각해보자.
배열 : 데이터의 크기가 정해져 있고, 삽입/삭제 보다 검색이 주로 많이 이루어지는 경우
리스트: 데이터의 크기가 정해져 있지 않고, 삽입/삭제가 빈번하며 검색(조회)가 많이 일어나지 않는 경우
데이터의 크기에 대해서 자바 개발자에게 조금더 쉬운 개념으로 보자면, for문과 while문의 차이정도로 생각하면 될 것 같다.
ArrayList Sort(정렬)
ArrayList를 정렬하는데는 Collection.sort() 메소드를 사용하면 편하다.
Collection.sort()의 메소드의 인자로 정렬할 리스트를 넘기면 된다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> people = new ArrayList<>();
for (int i=0; i<5; i++) {
int age = sc.nextInt();
people.add(age);
}
Collections.sort(people); // 정렬
for (int i=0; i<people.size(); i++) {
System.out.println(people.get(i));
}
}
}
- 5명의 나이를 입력받기로 하여, 사용자가 무작위로 입력하였을 때
Collections.sort();
메소드를 통하여 정렬 해 준뒤 출력하면 아래와 같이 오름차순으로 정리된 모습을 볼 수 있다.
review
- 물론 치명적인 것이 아니라면, 배열과 리스트는 혼합해서 사용이 가능하지만, 각각의 장점/단점을 알고 정확히 쓰게되면 보다 효율적인 코드 작성이 가능합니다.
- Arraylist 정렬 기능에 대해서 검색하다가 갑자기 생각나서 같이 내용 추가하였습니다.^^ 감사합니다.
반응형
'Language > Java' 카테고리의 다른 글
[Java] Socket 통신 간단 예제 (0) | 2023.05.08 |
---|---|
[Java] 실무에서 사용하는 코딩 (0) | 2022.07.28 |
[Java] SimpleDateFormat 사용법 - 날짜 형식 지정 (0) | 2022.02.15 |
[JAVA/JSP] getAttribute()와 getParameter()의 차이점 (0) | 2022.02.15 |
[Java] 자바 제곱, 제곱근 구하기(Math 함수) (0) | 2022.02.15 |