자료구조

[자료구조] 리스트

코 밑 2024. 3. 30. 05:15
Contents

요즘 프로그래머스 코딩테스트를 많이 풀고 있다.

코테를 풀면서 많이 쓰는 것 중 하나가 배열인데

배열을 사용하기 불편한 경우! 난 주로 어레이리스트를 선언해 사용한다.

오늘은 이 리스트에 대해 알아보자

 

리스트란

리스트(List)는 배열과 비슷하지만 리스트에 비해 편리하고 기능이 더 많은 자료형이다.

배열은 크기를 정하면 바꿀 수 없지만 리스트는 그딴 거 없다. 넣는대로 들어간다.

 

https://commit.tistory.com/20

 

[프로그래머스] 명예의 전당 (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()을 사용해 내림차순 정렬을 할 수가 있다.

 

 

출처 - 점프 투 자바

https://wikidocs.net/207

 

03-07 리스트

리스트(List)는 배열과 비슷하지만 편리한 기능이 더 많은 자료형이다. 리스트와 배열의 가장 큰 차이점은, 배열은 크기가 정해져 있지만 리스트는 변한다는 데 있다. 예를 들어 …

wikidocs.net

 

'자료구조' 카테고리의 다른 글

[자료구조] 맵  (1) 2024.04.04
[자료구조] 스택과 큐  (2) 2024.03.24