Programming Language/Java

[Java] 배열(Array)과 리스트(List)

ecc1 2023. 10. 18. 18:03

자료구조로서의 배열과 리스트

배열(Array)

- 처음부터 크기가 정해져 있음 -> 실제 데이터의 개수와 상관없이 지정한 크기만큼의 메모리가 사용됨

- 인덱스 사용 가능

- 데이터 중복 허용

- 검색 O(1), 추가/삭제 O(n)

순차 리스트(Sequential List)

- 배열의 문제점(데이터가 저장되지 않았는데도 메모리가 낭비되는 것)을 해결하기 위한 자료구조

-> 배열과 아주 유사하지만 데이터를 빈틈없이 채운다는 것이 특징

- 인덱스 사용 가능

- 데이터 중복 허용

연결 리스트(Linked List)

- 한 노드는 실제 데이터를 저장하는 공간과 다음 노드의 위치를 저장하는 공간으로 구성되어 있음

- 메모리의 공간을 연속적으로 사용할 필요가 없음(물리적 연결 X, 논리적 연결 O)

- 검색 O(n), 추가/삭제 O(1)

 

 

 

프로그래밍 언어(자바)에서의 배열과 리스트

자바에서의 배열

int[] array = new int[length]: length만큼의 정수형 array 선언

array[index] = data: array의 index에 data 삽입

variable = array[index]: array의 index번째 값 확인(variable이라는 변수에 넣음)

array[index] = null: array의 index번째 값 삭제(출력 시 해당 index의 값이 null로 출력됨)

 

배열 출력 시 주의 사항

System.out.print(array) 입력 시 알 수 없는 문자열이 나옴

-> array가 가리키고 있는 메모리 주소이 출력되는 것

 

따라서 반복문으로 값을 차례차례 출력하거나 toString() 메소드 사용해야 내용을 출력할 수 있음

e.g. System.out.println(Arrays.toString(array)

(해당 메소드를 쓰려면 java.util.Arrays를  import해야 함

 

 

자바에서의 리스트(ArrayList)

Collection Framework 중 java.util package

가변 크기 배열

 

선언

ArrayList<String> list = new ArrayList<>();: list라는 이름의 String 자료형을 담을 리스트 선언

ArrayList<Integer> list = new ArrayList<Integer>(5);: 초기 용량 지정

- list의 초기 용량 지정은 필수가 아님! (가변 크기 배열)

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4));: 초기 값과 함께 list라는 이름의 리스트 선언

 

추가

list.add(data): list에 data 추가

list.add(index, data):list의 index번째 인덱스에 data 추가

list1.addAll(list2): list1에 list2의 내용 모두 추가

 

확인/검색

list.get(index): list의 index번째 인덱스의 값을 가져옴

list.size(): list의 크기 확인

list.contains(data): list에 data가 있는지 검색

list.indexOf(data): list에 data가 있는지 검색하고 index를 return(찾는 값이 없으면 -1)

list.lastIndexOf(data): list에 data가 있는지 뒤쪽부터 검색하고 index를 return(찾는 값이 없으면 -1)

list.isEmpty(): list가 비어 있는지에 대해 True/False를 return

 

변경

list.set(index, data): list의 index번째 인덱스의 값을 data로 변경

 

삭제

list.remove(index): list의 index번째 값 삭제

list.remove(data): (data로 값을 구분할 수 있는 경우) list의 data 삭제

list.clear(): list의 모든 값 초기화

 

ArrayList Code Example 코드 예제

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {

        List<Integer> array = new ArrayList<>(); // 정수 타입의 어레이 선언

        array.add(3); // array에 3 추가: [3]
        array.add(0, 0); // array의 0번 인덱스에 0 추가: [0, 3]
        array.add(5); // [0, 3, 5]

        array.set(1, 4); // 1번 인덱스의 값을 4로 변경: [0, 4, 5]

        array.remove(2); // 2번 인덱스의 값 삭제: [0, 4]
        array.clear(); // 모두 삭제: []

    }
}

 

 

 

 

 

참고:

 

[JAVA] ArrayList의 개념 및 사용법

안녕하세요 이번 포스팅에서는 배열에서 좀 더 발전된 형태인 ArrayList에 대해서 알아보겠습니다 목차 ArrayList란? ArrayList 선언하기 ArrayList 값 추가하기 ArrayList 값 변경하기 ArrayList 값 삭제하기 Arr

crazykim2.tistory.com

 

[Java] 자바 - ArrayList 사용방법 (개념, 특징, 메소드 및 예제)

자바 - ArrayList 사용방법 (개념, 특징, 메소드 및 예제) 자바에서 기본적으로 여러 데이터를 다룰때 배열을 사용합니다. 그런데 배열은 처음 정의할때 그 길이를 한번 지정하게 되면 나중에 변경

kadosholy.tistory.com

 

🧱 자바 ArrayList 구조 & 사용법 정리

ArrayList 컬렉션 자바의 컬렉션 프레임워크를 접한다면 가장 먼저 배우는 컬렉션이 ArrayList 일 것이다. 자료구조(Data Structure) 이라고 해서 무언가 방대하게 느껴져 접근이 어려울 것 처럼 느끼겠지

inpa.tistory.com

 

[Java] 배열 값 출력하는 2가지 방법 (반복문, Arrays.toString())

이번 포스팅에서는 반복문과 java.util.Arrays의 toString() 메소드를 이용하여 배열의 값을 출력하는 방법을 소개합니다. 먼저, 그냥 배열의 값을 출력해 볼까요? [ 코드 ] public class PrintArray { public static

hianna.tistory.com