💻 배열
배열은 연속된 변수들의 집합이다.
변수들을 하나로 묶어서 관리를 하며 처음 생성시 크기가 정해진다.
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();
}
}
hasNext() - 다음 element가 있는지 확인후 boolean값 리턴
next() - 다음 element를 가져온다.
remove() - next()로 가져온 element를 제거한다.
for-each
- 자바에서는 for문에서 한 배열,list안의 요소로 for문을 실행가능하다.
for(자료형 x : List or 배열){
System.out.println(x);
}
와 같은 꼴로 사용이 가능하다.
일단 이정도만