1. ArrayList
- 배열(Array)처럼 일렬로 데이터를 저장하고 조회하여 순번값(인덱스)로 값을 하나씩 조회할 수 있습니다.
- Array처럼 크기를 고정하여 생성하는 것을 정적배열 이라면 ArrayList 처럼 크기가 가변적으로 늘어나는 것을 동적배열 이라고 합니다.
- 기능
- 선언 : ArrayList<Integer> intList
- 생성 : new ArrayList<Integer>();
- 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없습니다.
- 값 추가 : intList.add({추가할 값})
- 값 수정 : intList.set({수정할 순번}, {수정할 값})
- 값 삭제 : intList.remove({삭제할 순번})
- 전체 출력 : intList.toString()
- 전체 제거 : intList.clear()
2. LinkedList
- 메모리에 남는 공간을 요청해서 여기저기 나누어서 실제값을 담아놓고, 실제값이 있는 주소값으로 목록을 구성하고 저장합니다.
- 기본적인 기능은 ArrayList 와 동일하지만 LinkedList 는 값을 나누어 담기 때문에 모든값을 조회하는 속도가 느립니다. 대신에, 값을 중간에 추가하거나 삭제할때는 속도가 빠릅니다.
- 기능
- 선언 : LinkedList<Integer> linkedList
- 생성 : new LinkedList<Integer>();
- 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없습니다.
- 값 추가 : linkedList.add({추가할 값})
- 값 중간에 추가 : linkedList.add({추가할 순번}, {추가할 값})
- 값 수정 : linkedList.set({수정할 순번}, {수정할 값})
- 값 삭제 : linkedList.remove({삭제할 순번})
- 전체 출력 : linkedList.toString()
- 전체 제거 : linkedList.clear()
3. Stack (Last-In-First-out)
- 값을 수직으로 쌓아놓고 넣었다가 빼서 조회하는 형식으로 데이터를 관리 합니다.
- 기능
- 선언 : Stack<Integer> intStack
- 생성 : new Stack<Integer>();
- 추가 : intStack.push({추가할 값})
- 조회 : intStack.peek() 형태로 맨 위값을 조회합니다.
- 꺼내기 : intStack.pop() 형태로 맨 위값을 꺼냅니다. (꺼내고나면 삭제됨)
4. Queue(First In First Out)
- 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합 입니다.
- 기능
- 선언 : Queue<Integer> intQueue 형태로 선언합니다.
- 생성 : new LinkedList<Integer>(); 형태로 생성합니다.
- 추가 : intQueue.add({추가할 값}) 형태로 값을 맨 위에 추가합니다.
- 조회 : intQueue.peek() 형태로 맨 아래값을 조회합니다.
- 꺼내기 : intQueue.poll() 형태로 맨 아래값을 꺼냅니다. (꺼내고나면 삭제됨)
5. Set
- 순서가 없는 데이터의 집합 (데이터 중복 허용 안함) - 순서없고 중복없는 배열
- 기능
- 선언 : Set<Integer> intSet
- 생성 : new HashSet<Integer>();
- 추가 : intSet.add({추가할 값}) 형태로 값을 맨 위에 추가합니다.
- 조회 : intSet.get({조회할 순번})
- 삭제 : intSet.remove({삭제할 값})
- 포함확인 : intSet.contains({포함확인 할 값}) 형태로 해당값이 포함되어있는지 boolean 값으로 응답 받습니다.
6. Map
- key-value 구조로 구성된 데이터를 저장할 수 있습니다.
- 기능
- 선언 : Map<String, Integer> intMap 형태로 Key타입과 Value타입을 지정해서 선언
- 생성 : 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값을 삭제
중앙값 구하기
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
Arrays.sort(array);
return array[array.length / 2];
}
}
def solution(array):
array.sort()
answer = array[len(array)//2]
return answer
자바에도 파이썬과 같은 역할을 하는 sort가 있었다!
배열 두배 만들기
public class Solution {
public static int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
for(int i = 0 ; i < numbers.length ; i++){
answer[i] = numbers[i] * 2;
}
return answer;
}
}
// return Arrays.stream(numbers).map(i -> i * 2).toArray(); 스트림을 활용한 방법!
// ArrayList<Integer> answer = new ArrayList<>(); ArrayList를 활용한 방법!
for(int num : numbers){
answer.add(num*2);
}
return answer;
def solution(numbers):
return [a * 2 for a in numbers]
'TIL' 카테고리의 다른 글
2023-10-25 TIL(객체 지향 프로그래밍의 특징, 프로그래머스) (0) | 2023.10.25 |
---|---|
2023-10-24 TIL(프로그래머스) (0) | 2023.10.24 |
2023-10-20 TIL (추상클래스와 인터페이스의 차이점) (2) | 2023.10.20 |
2023-10-19 TIL (git, 프로그래머스) (0) | 2023.10.19 |
2023-10-18 TIL (프로그래머스) (2) | 2023.10.19 |
댓글