[자바 문법 #3] 자료구조

김지현·2023년 10월 17일
1

JAVA

목록 보기
3/14

배열(Array)

참조형 변수이므로 주소값 저장

선언
1. 타입[ ] 변수
2. 타입 변수[ ]
생성 : new 타입[크기]

초기화
1. 중괄호{}
2. 반복문
3. Arrays.fill 메서드

복사(.clone())

  • 얕은 복사 : 주소값만 복사(실제값 1개), 복사된 배열의 값 수정시 원본 배열 값도 수정
int[] a = { 1, 2, 3 }
int[] b = a;
  • 깊은 복사 : 실제 값을 꺼내어 복사, 서로 다른 복사된 배열 생성
int[] b = a.clone();	// 2차원 이상에서는 얕은 복사로 작동
int[] c = Arrays.copyOf(a, a.length);

String

String : 문자열
char[ ] : 문자 배열

String 메서드

  • length() : 문자열 길이
  • charAt(int index) : 문자열에서 해당 index 문자 반환
  • substring(int from, int to) : from ~ to-1의 문자열 반환
  • equals(String str) : 같은지 확인
  • toCharArray() : 문자열을 문자 배열로 반환
  • new String(char[] charArr) : 문자배열을 String으로 반환

가변 배열

  • 2차원 배열 생성시 열의 길이를 생략하여 행마다 다른 길이의 배열을 요소로 저장
  • int[ ][ ] array = new int[3][ ];

컬렉션

참조형 자료구조, 참조형 변수 저장
다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능이 많음

  • 크기 자동조정, 추가, 수정, 삭제, 반복, 순회, 필터 등

List

순서가 있는 데이터의 집합
데이터 중복 허용
배열과 비슷

ArrayList

배열처럼 일렬로 데이터를 저장하고 인덱스로 값 조회
Array : 정적 / ArrayList : 동적

기능

  • .add({}) : 값 추가
  • .set({index}, {value}) : 값 수정
  • .remove({index}) : 값 삭제
  • .toString() : 전체 값 출력
  • .clear() : 전체 값 삭제

LinkedList

메모리에 남는 공간을 요청하여 실제값으로 나누어 담고, 주소값으로 목록을 구성하고 저장
조회 속도 느림 / 수정, 삭제 속도 빠름
기능은 Array와 거의 비슷

  • .add({index}, {value}) : 값 중간에 추가

Stack

값을 수직으로 쌓아놓고 넣었다 빼는 방식
Last-In-First-Out(LIFO) : 나중에 들어간 것이 먼저 나옴

기능

  • .push({value}) : 값 추가
  • .peek() : 맨 위 값 조회
  • .pop() : 맨 위 값 삭제

Queue

한쪽에서 데이터를 넣고 반대쪽에서 뺄 수 있는 방식
First-In-First-Out(FIFO) : 먼저 들어간 것이 먼저 나옴
생성자 없음 → LinkedList로 생성

기능

  • Queue<타입> intQueue = new LinkLIst<타입>() : 선언 및 생성
  • .add({value}) : 값 추가
  • .peek() : 맨 앞 값 조회
  • .poll() : 맨 앞 값 삭제

Set

집합과 같은 자료구조 (순서 X, 중복 X)
생성자 없는 인터페이스

응용

  • HashSet : 가장 빠름, 순서 X
  • TreeSet : 정렬된 순서대로 보관
  • LinkedHashSet : 추가된 순서 또는 가장 최근에 접근한 순서대로 접근 가능

기능

  • .add({value}) : 값 추가
  • .get({index}) : index 위치의 값 조회
  • .remove({value}) : 값 삭제
  • .contains({value}) : 해당 값이 포함되어 있는지 확인

Map

Key-Value 페어 구조로 구성된 자료구조
Key : 중복 X

응용

  • HashMap : 순서 X, 중복 X, key와 value로 null 허용
  • TreeMap : Key값 기준으로 정렬 가능, 시간 다소 소요

기능

  • .put({key}, {value}) : 값 추가
  • .get({key}) : key에 있는 value값 저장
  • .ketset() : 전체 key값 조회
  • .values() : 전체 value값 조회
  • .remove({key}) : key에 있는 value값 삭제
  • 길이 값 가져오기
  • length : 배열 길이 조회
  • length() : 문자열 길이를 조회
  • size() : 컬렉션 타입 목록의 길이 조회
profile
Server Developer

0개의 댓글