본문 바로가기

배운내용 정리

Java 문법 Array, collection

내배캠 강의중 Array와 collection 부분에서 중요하다고 생각되는 특징과 기능을 정리

 

1. Array

배열 복사

얕은 복사 :  주소값만 복사되고 실제값은 1개로 유지되는걸 얕은 복사라고 한다.

깊은 복사 :  얕은 복사처럼 가짜 복사가 아니라 진짜 새로운 배열을 똑같이 만들고 싶을때 깊은 복사를 한다.

 

배열 복사 메서드

.clone() 메서드: 1차원 배열에서는 깊은복사로 동작 clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작

Arrays.copyOf() 메서드

 

2. List

1-1 ArrayList

특징

생성 시점에 작은 연소된 공간을 요청해서 참조형 변수들을 담아놓는다.

값이 추가될 때 공간이 필요하면 더 큰 공간을 받아서 저장하니깐 상관없다.

 

기능

  • 선언 : ArrayList<Integer> intList 형태로 선언 ArrayList<Integer> intList = new ArrayList<Integer>();
  • 생성 : new ArrayList<Integer>(); 형태로 생성
  • 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없다.
  • 값 추가 : intList.add({추가할 값}) 형태로 값을 추가
  • 값 수정 : intList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정
  • 값 삭제 : intList.remove({삭제할 순번}) 형태로 값을 삭제
  • 전체 출력 : intList.toString() 형태로 전체 값을 대괄호[]로 묶어서 출력
  • 전체 제거 : intList.clear() 형태로 전체 값을 삭제

1-2 LinkedList

특징

기본적인 기능은 ArrayList와 동일 하지만 LinkedList는 값을 나누어 담기 때문에 모든값을 조회하는 속도가 느리다.

대신 값을 중간에 추가하거나 삭제할때는 속도가 빠름

 

기능

  • 선언 : ArrayList<Integer> intList 형태로 선언
  • 생성 : new ArrayList<Integer>(); 형태로 생성
  • 선언 및 생성:  ArrayList<Integer> intList = new ArrayList<Integer>(); 
  • 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없다
  • 값 추가 : intList.add({추가할 값}) 형태로 값을 추가
  • 값 수정 : intList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정
  • 값 삭제 : intList.remove({삭제할 순번}) 형태로 값을 삭제
  • 전체 출력 : intList.toString() 형태로 전체 값을 대괄호[]로 묶어서 출력
  • 전체 제거 : intList.clear() 형태로 전체 값을 삭제

3. stack

특징

상자에 물건을 넣고 빼는것처럼 밑에서 위로 쌓고, 꺼낼때는 위에서 부터 꺼내는 형식

 

기능

  • 선언 : Stack<Integer> intStack 형태로 선언 Stack<Integer> intStack = new Stack<Integer>();
  • 생성 : new Stack<Integer>(); 형태로 생성
  • 선언 및 생성: Stack intStack = new Stack();
  • 추가 : intStack.push({추가할 값}) 형태로 값을 추가
  • 조회 : intStack.peek() 형태로 맨 위값을 조회
  • 꺼내기 : intStack.pop() 형태로 맨 위값을 꺼냅니다. (꺼내고나면 삭제됨)

 

4. Queue

특징

First In First Out : 먼저들어간 순서대로 값을 조회

 

기능

  • 선언 : Queue<Integer> intQueue 형태로 선언 
  • 생성 : new LinkedList<Integer>(); 형태로 생성
  • 선언 및 생성: Queue intQueue = new LinkedList<>();
  • 추가 : intQueue.add({추가할 값}) 형태로 값을 맨 위에 추가
  • 조회 : intQueue.peek() 형태로 맨 아래값을 조회
  • 꺼내기 : intQueue.poll() 형태로 맨 아래값을 꺼냅 (꺼내고나면 삭제됨)

5. Set

특징

순서가 보장되지 않는 대신 중복을 허용하지 않도록 유지할 수 있다.

 

기능

  • 선언 : Set<Integer> intSet 형태로 선언 
  • 생성 : new HashSet<Integer>(); 형태로 생성
  • 선언 및 생성: Set intSet = new HashSet();
  • 추가 : intSet.add({추가할 값}) 형태로 값을 맨 위에 추가
  • 조회 : intSet.get({초회할 순번}) 형태로 순번에 있는 값을 조회
  • 삭제 : intSet.remove({삭제할 값}) 형태로 삭제할 값을 직접 지정
  • 포함확인 : intSet.contains({포함확인 할 값}) 형태로 해당값이 포함되어있는지 boolean 값으로 응답 받는다.
  • TreeSet :  정렬된 순서대로 보관하며 정렬 방법을 지정할 수 있음
  • LinkedHashSet : 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능, 출력시 iterator() 메서드 필요

5. Map

특징

key-value 형태로 데이터를 저장하기 때문에 기존에 순번으로만 조회하던 방식에서, key 값을 기준으로 vlaue를 조회할 수 있다.

key 값 단위로 중복을 허용하지 않는 기능을 가지고 있다.

 

기능

  • 선언 : Map<String, Integer> intMap 형태로 Key타입과 Value타입을 지정해서 선언
  • 생성 : new HashMap<>(); 형태로 생성
  • 선언 및 생성: HashMap<String, Integer> intMap = new HashMap<>();
  • 추가 : intMap.put({추가할 Key값},{추가할 Value값}) 형태로 Key에 Value값을 추가
  • 조회 : intMap.get({조회할 Key값}) 형태로 Key에 있는 Value값을 조회
  • 전체 key 조회 : intMap.keySet() 형태로 전체 key 값들을 조회
  • 전체 value 조회 : intMap.values() 형태로 전체 value 값들을 조회
  • 삭제 : intMap.remove({삭제할 Key값}) 형태로 Key에 있는 Value값을 삭제
  • TreeMap : key 값을 기준으로 정렬을 할 수 있습니다. 다만, 저장시 정렬(오름차순)을 하기 때문에 저장시간이 다소 오래 걸림

'배운내용 정리' 카테고리의 다른 글

객체지향(2)  (0) 2023.10.17
객체지향(1)  (1) 2023.10.16
Java 문법  (0) 2023.10.13
JVM  (1) 2023.10.13
JSON 이해하기 및 Fetch 프로젝트에 적용하기  (0) 2023.10.10