배열은 많은 수의 데이터를 다루기 위해 등장한 자료구조이다.
💡
배열은 데이터로 접근이 빠르므로 자료의 변경이 거의 없고 참조만 하는 정적 데이터일때 많이 사용하는 자료구조다!!!
cf) 삽입/삭제가 빈번한 데이터라면 링크드리스트를 사용한다.
import java.util.ArrayList;
ArrayList<Integer> list = new ArrayList<>();
list.add(val) : 맨 뒤에 val추가
list.add(idx, val) : idx위치에 val추가
list.set(idx, val) : idx위치 val로 값 변경
list.remove(idx) : idx 위치 삭제
list.get(idx) : idx위치 값 반환
list.size() : list의 크기 반환
동작 | 시간복잡도 |
---|---|
접근 | |
탐색 | |
추가 / 제거 |
💡
문제:
int arr를 asList를 사용하여 ArrayList로 바꿔주고 스트림연산을 하기 위해 스트림으로 바꿔주었다. 이때 바로 list.stream(arr)바꾸면 stream연산이 되지 않고 에러가 났다.
원인:
arr를 스트림으로 만들때, arr의 자료형과 stream의 자료형이 맞지 않았기 때문이다.
해결:
그래서 stream이 아니라 IntStream.of(arr)를 사용하여 IntStream으로 바꿔주니 스트림에서 중계연산과 최종연산이 가능했다!!!
느낀점:
형에 따라 스트림도 자료형을 맞춰주어야 한다는 사실을 깨닫게 되었다. 자바는 생각보다 타입케스팅이나 자료형에 민감한 언어라는 생각이 들었다. 이게 다 안정성때문인것 같다고 추측해본다!!
그냥 배열 int[] arr가 있을때 sort하는 법: Arrays.sort(arr);