본문 바로가기

Java

Java 8 멀티코어 CPU 대중화와 같은 하드웨어적인 변화는 Java의 변화에 영향을 미치게 되었고, Java는 병렬 실행 환경을 쉽게 관리하고 에러가 덜 발생하는 방향으로 진화하기 위해 노력했다. 🙄 Java 8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라는 두 가지 요구사항을 기반으로 한다. ✔ Java 8에서 제공하는 새로운 기술 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 ✔ Java 8 설계의 밑바탕을 이루는 세 가지 프로그램이 개념 😎 스트림 처리 스트림이란 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. A, B, C, D = 파이프 라인 데이터 -> A -> B -> C -> D -> 결과 데이터 Java 8에서는 java.util.stream 패키지에.. 더보기
HashMap vs HashSet HashMap Map 인터페이스의 구현체이다. HashTable과 유사한 자료구조로 데이터를 저장한다. Key-Value 형태로 데이터를 저장하고 Key와 Value의 Mapping을 유지한다. Key 중복을 허용하지 않지만, Value 값의 중복을 허용한다. Key에 하나의 null, Value의 다중 null을 허용한다. HashSet Set 인터페이스의 구현체이다. 내부적으로는 HashMap을 사용하기 때문에 마찬가지로 HashTable과 유사한 자료구조로 데이터를 저장한다. Key의 값으로 객체 그 자체를 저장하고 Value 값으로 HashSet 내부 구현 코드에 미리 선언해둔 Dummy Value를 저장한다. 중복을 허용하지 않는다. 하나의 null 값을 허용한다. 데이터의 순서에 의미를 두지 .. 더보기
[Java] 함수형 프로그래밍 1. 명령형 프로그래밍 vs 선언형 프로그래밍 명령형 프로그래밍과 선언형 프로그래밍의 차이는 다음 표와 같다. 명령형 프로그래밍 선언형 프로그래밍 OOP 객체 지향 프로그래밍 Functional Programming How to do? What to do? 어떻게 해야 하는가? 무엇을 하여야 하는가? 명령형 프로그래밍과 선언형 프로그래밍의 차이를 예를 통해 알아보면 다음과 같다. 예) 유저 리스트에서 유효한 유저들의 이메일을 리스트로 분리 명령형 프로그래밍(How to do?) 이메일을 담을 리스트 선언 루프 유효한지 확인(If) 유효하다면 이메일 추출 이메일 리스트에 해당 이메일 넣기 List memberList = List.of( new Member(1, "test1", true, "test1@tes.. 더보기