Stream이란?데이터의 흐름에서 원하는 값을 가공하여 원하는 값을 리턴하는 역할을 수행스트림은 컬렉션(배열)의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다내부 반복자를 사용하므로 병렬처리가 쉽다스트림 생성.stream()배열 스트림Stream.of("a", "b", "c")IntStream.of(1,2,3)Arrays.stream(arr)컬렉션 스트림Stream.builder()Builder를 사용하면 스트림에 직접적으로 값을 넣을 수 있음.build메서드로 스트림을 리턴함Stream builderStream = Stream.builder() .add("A").add("B").add("V") .build(); // [A, B, C]중간 연산매핑, 필터링, 정..
CS/알고리즘
정수 배열을 하나 받습니다. 배열의 중복값을 제거하고 배열 데이터를 내림차순으로 정렬해서 반환하는 solution( ) 함수를 구현하세요.제약조건배열 길이는 2 이상 1,000 이하입니다.각 배열의 데이터 값은 -100,000 이상 100,000 이하입니다.입출력의 예코드 리뷰import java.util.Arrays;import java.util.Collections;class Solution { private static int[] solution(int[] arr) { // ❶ 중복값 제거 Integer[] result = Arrays.stream(arr).boxed().distinct().toArray(Integer[]::new); // Arrays.stream() stream으..
접근하는 경우에는 임의 접근이라는 방법으로 모든 위치에 있는 데이터를 단번에 접근할 수 있으므로, 데이터에 접근하기 위한 시간 복잡도는 O(1)하지만 데이터를 어디에 저장하느냐에 따라 추가 연산에 대한 시간복잡도의 차이게 존재한다맨 뒤에 삽입하는 경우다른 데이터 위치에 영향을 주지 않음시간 복잡도는 O(1)맨 앞에 삽입하는 경우기존 데이터들을 뒤로 한 칸 씩 밀어냄데이터 개수가 N개 일 때, 시간 복잡도 O(N)중간에 삽입하는 경우해당 뒤의 데이터를 뒤로 한칸 씩 밀어내야함현재 삽입한 데이터 뒤에 있는 데이터 개수만큼 미는 연산밀어야하는 데이터 개수가 N개일 때 시간 복잡도O(N)고려사항배열의 경우 데이터에 자주 접근하거나 읽어야 하는 경우 좋은 성능을 낼 수 있지만 메모리 공간을 충분히 확보해야하는 단..
Lambda Expression (람다식)자바 1.8 버전에서 추가된 메서드다른말로 익명 함수(anonymous function)이라고 함이름이 없는 함수를 말하며 코드에서 딱 한 번 실행할 목적으로 사용하거나함수 자체를 다른 함수의 인수로 전달 할 때 사용 private static class Node { int dest, cost; public Node(int dest, int cost) { this.dest = dest; this.cost = cost; }}public static void main(String[] args) { Node[] nodes = new Node[5]; nodes[0] = new Node(1, 10); nodes[1] = new Node(2, 20); ..
참고 책문자열은 문자들을 집합의 형태로 구성한 이뮤터블 객체Immutable 이뮤터블 객체값을 변경할 수 없는 객체를 의미문자열 추가 삭제문자열은 이뮤터블 객체이므로 기존 객체를 수정하는 것이 아니라 새로운 객체를 반환함String string = "He"; // ➊string += "llo"; // ➋System.out.println(string); // "Hello"그러므로 시간복잡도는 단순히 1번의 과정이 아니라1. 새로운 객체 생성2. "He" 값을 하나씩 복사 (2개 복사)3. "He" 뒤에 "llo" 저장 (3개 저장)시간 복잡도는 문자열의 길이가 N일 때, O(N)문자열 수정새로운 객체를 생성하지 않을 시엔 replace()를 사용한다StringBuffer..
Primitive Typeint, long, float, doubleReference TypeInteger, Long, Float, Double레퍼런스 타입은 참조형 변수이므로 프리미티브 타입보다 연산속도가 더 느림하지만 레퍼런스 타입은 컬렉션 프레임워크 등에서 정수형 또는 부동소수형을 저장할 때 사용비트 연산자int a = 13int b = 4 System.out.println(a & b) # AND / 4System.out.println(a | b) # OR / 13System.out.println(a ^ b) # XOR / 9System.out.println(~a) # NOT / -14System.out.println(a > 1) # 오른쪽 시프트 (a를 2^1..