3. 배열과 배열리스트

김현우·2024년 5월 10일
0

자료구조

목록 보기
8/12
post-thumbnail

💻 배열

배열은 연속된 변수들의 집합이다.

변수들을 하나로 묶어서 관리를 하며 처음 생성시 크기가 정해진다.

java에서는 자료형 []배열명 = new 자료형[원하는 크기];
로 선언및 초기화를 해준다.

인덱스를 통해서 접근한다.

<시간복잡도>
접근 - 인덱스를 알고있다면 단 한번에 접근가능 O(1)
검색 - 특정 값 검색시 처음부터 순회해야함 최악의 경우 모두다 순회 O(n)
삽입 - 새로운 요소 삽입시 기존 요소들을 밀고 나서 삽입가능 최악의 경우 전부다 밀어야함 O(n)
삭제 - 삽입과 마찬가지로 삭제후 기존요소들을 당겨야함 최악의 경우 전부다 당겨야함 O(n)

특이점은 자바에서는 배열또한 스택이 아닌 Heap에 저장되고 주소만 stack에 저장됌

💻 Array List

자바에는 Array List라는 자료구조가 존재한다.
Array List는 배열과 비슷하지만 정해진 크기가 아닌 가변하는 크기를 가진다.
배열에서는 정해진 크기를 넘어서는 데이터의 수를 저장하려하면 문제가 생기지만
Array List에서는 크기를 넘어서면 새 배열을 생성해 크기를 늘려준후 이전 배열을 제거한다.

특이점으로는 
배열의 경우 데이터를 삭제시 그 공간을 값을 비워두고 유지시키지만
ArrayList에서는 한칸씩 당겨온다.

선언

array list사용을 위해선

import java.util.ArrayList;를 해줘야한다.

선언과 초기화시

ArrayList<원하는 타입> 리스트명 = new ArrayList<타입(생략가능)>(처음 용량);

으로 선언과 초기화가 가능하다.

()안에는 배열을 넣어 초기화도 가능하다.

Array List<Interger> list = new ArrayList<>(Arrays.asList(1,2,3));

매소드

add(element) 
- ArrayList의 맨뒤에 element가 추가된다.

add(index,element) 
- 원하는 위치에 element가 추가된다. 
- 단 index가 존재치 않는다면 예를 들어 4개만 있는데 6번에 추가한다고 하면 오류 발생
- 바로 하나뒤에는 가능
- 중요한것은 add에서 index는 현재 채워진 데이터의 개수 기준

addAll(다른 list)
- 또다른 ArrayList을 뒤에 추가해준다.
- 배열은 추가가 불가하다.

addAll(index, 다른 list)
- 또다른 ArrayList를 index를 기준으로 추가한다.

clear()
- 리스트를 싹 비워준다.

contains(element)
- element가 현재 ArrayList 안에 있는지 없는지 확인하여 boolean은 리턴함

remove(index)
- index를 기준으로 데이터를 삭제한다.

remove(element)
- element에 해당하는 요소를 삭제한다.
iterator()
- 반복을 통해 순회탐색할때 사용한다.
- 먼저 iterator 객체를 생성해주어야한다.


Iterator<Integer> iterator = numbers.iterator();

    while (iterator.hasNext()) {
        Integer next = iterator.next();
        System.out.println(next);

        if (numbers.contains(10)) {
            iterator.remove();
        }
    }
//numbers list에서 하나씩 가져와서 조회후 10이면 삭제하는 코드

hasNext() - 다음 element가 있는지 확인후 boolean값 리턴
next() - 다음 element를 가져온다.
remove() - next()로 가져온 element를 제거한다.
for-each
- 자바에서는 for문에서 한 배열,list안의 요소로 for문을 실행가능하다.

for(자료형 x : List or 배열){
	System.out.println(x);
}

와 같은 꼴로 사용이 가능하다.

일단 이정도만 
profile
학생

0개의 댓글