Java (38) 썸네일형 리스트형 스트림 최종연산 출처 - Java의 정석 기초편 (남궁 성) 1. 스트림 최종연산 - 핵심: reduce(), collect() void forEach(Consumer Optional<T>객체 출처 - Java의 정석 기초편 (남궁 성) 1. Optional - T타입 객체의 래퍼 클래스 - null 직접 다루는 것 위험(NullPointerException), null 체크는 if문 필수(코드 지저분) - 해결하기 위해 null 값을 Optional 객체에 넣음→null 간접적으로 다루기 가능(null 최소화 사용) 2. Optional객체 생성 - of(), ofNullable() - 참조변수 기본값 초기화: empty() String str = "abc"; Optional optVal = Optional.of(str); Optional optVal = Optional.of("abc"); Optional optVal = Optional.of(new String("abc")); Optiona.. 스트림 중간연산 출처 - Java의 정석 기초편 (남궁 성) 1. 스트림 중간연산 - 핵심: map(), flatMap() Stream distinct() // 중복 제거 Stream filter(Predicate predicate) // 조건에 안 맞는 요소 제외 Stream limit(long maxSize) // 자르기 Stream skip(long n) // 건너 뜀 Stream peek(Comparator action) // 잘 처리되었는지 중간 확인 Strear sorted() // 정렬 Stream sorted(Comparator comparator) Stream map(Function mapper) // 변환 Stream flatMap(Function mapper) 2. skip(), limit() - 스.. 스트림(Stream) 출처 - Java의 정석 기초편 (남궁 성) 1. 스트림 - 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 - 컬렉션(List, Set, Map), 배열→스트림 - 작업처리: 스트림 만들기→중간연산(0~n번)→최종연산(0~1번) String[] strArr = { "aaa", "bbb", "ccc" }; List strList = Arrays.asList(strArr); Stream strStream1 = strList.stream(); // 스트림 생성 Stream strStream2 = Arrays.stream(strArr); // 스트림 생성 strstream1.sorted().forEach(System.out::println); strstream2.sorted().forEach(Syste.. 람다, 함수형 인터페이스, 메서드 참조 출처 - Java의 정석 기초편 (남궁 성) 1. 람다식(Lambda Expression) - 함수(≒메서드)→식 - 익명 함수(anonymous function) - 메서드: 클래스에 포함, 객체 생성시 메서드 호출 가능(메서드는 클래스에 종속적) - 람다식: 메서드의 매개변수, 반환값→메서드를 변수처럼 다룸 2. 람다식 작성 - 메서드 이름, 반환타입 제거하고 '->' 추가 - 반환값이 있으면 식이나 값만 적고 return문 생략 가능(끝에 ';' 안 붙임) - 매개변수 타입이 추론 가능하면 대부분의 경우 생략 가능 - 매개변수가 하나면 괄호() 생략 가능(타입이 없을 때만) - 문장이 하나면 블럭{} 생략 가능(끝에 ';' 안 붙임) 3. 람다식은 익명 함수? 익명 객체! - 람다식=익명 객체 - .. 쓰레드 메서드 출처 - Java의 정석 기초편 (남궁 성) 1. sleep() - 현재 쓰레드를 지정된 시간동안 일시정지(특정 쓰레드 지정 불가) - sleep()→일시정지→시간종료 or interrupt()→InterruptedException(깨우기)→실행대기 - 예외처리 필수(try-catch문의 InterruptedException 발생시 깨어남): delay메서드 생성→호출 static void sleep(long millis) // 천분의 일초 단위 잠 잘 시간 void delay(long millis) { try { Thread.sleep(millis); } catch(InterruptedExceptionn e) {} // 괄호에 아무 내용 안 넣음 } delay(15); // 호출 → 코드 심플, 편리 .. 쓰레드(thread) 출처 - Java의 정석 기초편 (남궁 성) 1. 프로세스 : 쓰레드 = 공장 : 일꾼 - 프로세스(process): 실행 중인 프로그램(program), 자원(resources)과 쓰레드로 구성(프로그램→실행→자원(메모리) 할당→프로세스) - 쓰레드(thread): 프로세스 내에서 실제 작업을 수행, 모든 프로세스는 최소한 하나의 쓰레드가 존재 - 싱글쓰레드: 자원 + 쓰레드 - 멀티쓰레드: 자원 + 쓰레드 + 쓰레드 + ... 2. 멀티쓰레딩 장단점 - 장점: CPU 사용률 향상, 자원의 효율적 사용, 사용자 응답성 향상, 작업 분리→코드 간결 - 단점: 자원 공유→동기화, 교착상태(dead-lock), 각 쓰레드 효율적으로 실행되어야 함(기아) - 문맥 전환(context switching): 프로.. 애너테이션 출처 - Java의 정석 기초편 (남궁 성) 1. 애너테이션이란? - @태그: 주석처럼 프로그래밍 언어에 영향을 미치지 않고 유용한 정보 제공 - 소스코드 + 소스코드 설명 문서: 주석 /** ~ */ 에 소스 코드에 대한 정보 저장 - javadoc.exe: 소스파일에서 주석 추출해 HTML문서 생성 /** 소스코드 주석 @link // 유용한 정보 제공 @author @since */ 소스코드 2. 표준 애너테이션 - 자바에서 기본적으로 제공 @Override @Deprecated @SuppressWarnings @SafeVarargs @FunvtionalInterface @Native @Override - 컴파일러에게 메서드 오버라이딩하는 것임을 알림 - 오버라이딩 올바르게 했는지 컴파일러가 체크 .. 이전 1 2 3 4 5 다음