filter() 스트림 요소를 조건에 맞게 필터링 map() 스트림 요소를 특정 형태로 변환 mapToInt() 스트림 요소를 IntStream 형태로 변환 mapToLong() 스트림 요소를 LongStream 형태로 변환 sorted() 스트림 내 요소를 정렬 forEach() 스트림 요소를 순환하며 반복 처리(반환형이 void로 출력으로 많이 사용) count() 스트림 요소의 총 개수를 long 타입으로 반환 sum() 스트림 요소의 총합 반환 reduce() 스트림 요소를 소모해가며 누적 계산을 수행, 결과값 반환 1. 스트림이란? 스트림(Stream)이란 컬렉션, 배열 등의 여러 자료의 처리에 대한 기능을 구현해 놓은 클래스다. 스트림을 활용하면 배열, 컬렉션 등의 자료를 일관성있게 처리할 수..
실습 코드는 여기서 1. 함수형 프로그래밍과 람다식 자바는 객체 지향 프로그래밍이기 때문에 어떤 기능이 필요하면 클래스를 먼저 만들고 클래스 안에 기능을 구현한 메서드를 만든 후 그 메서드를 호출해야 한다. 즉, 클래스가 없으면 메서드를 사용할 수 없다. 함수형 프로그래밍(FP)는 함수의 구현과 호출만으로 프로그램을 만들 수 있는 프로그래밍 방식이다. 자바8부터 함수형 프로그래밍 방식인 람다식을 제공한다. 2. 람다식 구현하기 람다식은 함수 이름이 없는 익명 함수를 만드는 것이다. 3. 람다식 문법 살펴보기 1. 매개변수 자료형과 괄호 생략하기 1) 매개변수 자료형 생략O 2) 매개변수가 하나인 경우, 괄호 생략O // 매개 변수 1개 괄호 생략 str -> {System.out.println(str)}..
종류 구현 위치 사용할 수 있는 외부 클래스 변수 생성 방법 인스턴스 내부 클래스 외부 클래스 멤버 변수와 동일 외부 인스턴스 변수, 외부 전역 변수 외부 클래스 생성 후 내부 클래스 생성 정적 내부 클래스 외부 클래스 멤버 변수와 동일 외부 전역 변수 외부 클래스와 무관하게 생성 지역 내부 클래스 메서드 내부에 구현 외부 인스턴스 변수, 외부 전역 변수 메서드 호출할 때 생성 익명 내부 클래스 1) 메서드 내부에 구현 2) 변수에 대입하여 직접 구현 외부 인스턴스 변수, 외부 전역 변수 1) 메서드 호출할 때 생성 2) 인터페이스 형 변수에 대입할 때 new 예약어로 생성 1. 내부 클래스 정의와 유형 내부 클래스(Inner Class)는 클래스 내부에 선언한 클래스다. 1) 외부 클래스와 밀접한 관련..
Map 인터페이스는 자료를 쌍으로 관리하는데 필요한 메서드가 정의되어있다. key-value 쌍으로 이루어진 객체의 key값은 유일하고 value 값은 중복될 수 있다. Map인터페이스를 구현한 클래스는 내부적으로 해시 알고리즘에 의해 구현되어 있다. 1. HashMap 클래스 HashMap은 Map 인터페이스를 구현한 클래스 중 가장 많이 사용한다. HashMap에서 자료를 관리하는 방식은 해시 방식이다. 서로 다른 key 값에 같은 해시값이 반환되는 충돌이 발생할 경우를 고려해 해시 테이블에 데이터를 꽉 채우지 않고 적정 수준이 되면 테이블을 확장해 충돌 발생 확률을 낮춘다. Map 인터페이스에서 사용하는 key 값은 중복될 수 없으므로 equals()와 hashcode() 메서드를 재정의하여 사용하..
1. HashSet 클래스 HashSet 클래스는 집합 자료 구조를 구현하며 중복을 허용하지 않는다. 1) 중복을 허용하지 않는다. 2) 순서가 없다. 실습 코드는 여기서 1. HashSet을 활용해 회원 관리 프로그램 구현하기 addMember(): HashSet에 회원 추가 removeMember(): 매개변수로 받은 id에 해당하는 회원을 HashSet에서 삭제 showAllMember(): HashSet의 모든 회원 출력 (주의) ArrayList에서는 ArrayList.get(i)를 이용해 i번째에 해당하는 항목을 삭제했지만, HashSet은 순서가 없으므로 해당 아이디를 가진 회원을 찾기위해 Iterator를 사용한다. boolean add(E o) 매개변수로 받은 객체가 HashSet에 없으..
List 인터페이스에는 객체를 순서에 따라 저장하고 유지하는데 필요한 메서드가 선언되어 있다. 자바에서 배열을 구현한 클래스는 ArrayList, Vector가 있고 배열과 구현 방식은 다르지만 순차 자료구조를 구현한 LinkedList가 있다. 1. ArrayList 클래스 ArrayList는 객체 배열을 구현한 클래스로 객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용한다. 1. ArrayList를 활용해 회원 관리 프로그램 구현하기 addMember() : 회원 추가 removeMember(): 회원 삭제 showAllMember(): 전체 회원 출력 2. MemberArrayList 테스트 클래스 구현하기 실습 코드는 여기서 2. ArrayList와 Vector 클래스 V..
1. 컬렉션 프레임워크란? 자료 구조는 프로그램 실행 중 메모리에 자료를 유지/관리하기 위해 사용한다. 자바에서는 필요한 자료구조를 미리 구현하여 java.util 패키지에서 제공하는데 이를 컬렉션 프레임워크라고 한다. 자바 컬렉션 프레임워크는 여러 인터페이스가 정의되어있고 그 인터페이스를 구현한 클래스가 있다. 컬렉션 프레임워크의 전체 구조는 Collection 인터페이스와 Map 인터페이스 기반으로 이루어져 있다. 2. Collection 인터페이스 Collection 인터페이스는 하나의 자료를 모아서 관리하는데 필요한 기능을 제공한다. Collection 인터페이스 하위에 List 인터페이스와 Set 인터페이스가 있다. 1) List 인터페이스(순서O, 중복O) List를 구현한 클래스는 순차적인 ..
1. 제네릭이란? 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것을 '제네릭(Generic) 프로그래밍' 이라고 한다. 2. 제네릭의 필요성 어떤 변수가 여러 참조 자료형을 사용할 수 있도록 Object 클래스를 사용하면 다시 원래 자료형으로 반환해 주기 위해 매번 형 변환을 해야하는 번거로움이 있다. Public class ThreeDPrinter{ private Object material; public void setMaterial(Object material) { this.material = material; } public Object getMaterial() { return material; } } ThreeDPrinter printer = new ..