본문 바로가기

언어99

reduce() 연산 reduce() 연산: 정의된 연산이 아닌 프로그래머가 직접 구현한 연산을 적용 두번째 파라미터를 사용자가 작성하여 원하는 데이터를 뽑을 수 있다 정의된 연산이 아닌 프로그래머가 직접 구현한 연산을 적용 최종 연산으로 스트림의 요소를 소모하여 연산을 수행 배열의 모든 요소의 합을 구하는 reduce()연산 구현 예 Arrays.stream(arr).reduce(0, (a, b) -> a + b); reduce() 메서드의 두 번째 요소로 전달되는 람다식에 따라 다양한 기능을 수행 할 수 있음 람다식을 직접 구현하거나 람다식이 긴 경우 BinaryOperator를 구현한 클래스를 사용 함 배열의 모든 요소의 합을 구하는 예제 //배열의 모든 요소의 합을 구하는 예 int arr[] = {12, 22, 33.. 2021. 5. 22.
스트림(Stream) 스트림 자료의 대상과 관계없이 동일한 연산을 수행 배열, 컬렉션을 대상으로 연산을 수행 함 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함 자료 처리에 대한 추상화가 구현되었다고 함 한번 생성하고 사용한 스트림은 재사용 할 수 없음 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함 스트림 연산은 기존 자료를 변경하지 않음 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행되도 기존 자료에 대한 변경은 발생하지 않음 스트림 연산은 중간 연산과 최종 연산으로 구분됨 스트림에 대해 중간 연산은 여러 개의 연산이 적용될 수 있지만 최종 연산은 마지막에 한 번만 적용됨 최종연산이 호출되어야 중간 연.. 2021. 5. 8.
람다식 함수형 프로그래밍과 람다식 자바는 객체 지향 프로그래밍: 기능을 수행하기 위해서는 객체를 만들고 그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드를 구현 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라 함 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 함수형 프로그래밍(Functional Programming: FP) 함수형 프로그래밍은 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향을 주지 않도록 구현하는 방식, 순수 함수란 매개변수만을 사용하여 만드는 함수. 즉 함수 내부에서 함수 외부에 있는 변수를 사용하지 않아 함수가 수행되더라도 외부에는 영향을 주지 않는다. 함수를 기반으로 하는 프로그래밍이고 입력받는 자료 이외에는 외부 자료를 사용하지 않아 여러 자료가.. 2021. 5. 8.
여러 내부 클래스 내부 클래스 (inner class) 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함 중첩 클래스라고도 함 내부 클래스의 종류: 인스턴스 내부클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 (private으로 선언하는 것을 권장) 외부 클래스가 생성된 후 생성됨(정적 내부 클래스와 다름) private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 package ch51; class OutClass { private int num = 0; p.. 2021. 5. 8.
Map 인터페이스 쌍(pair)으로 자료를 관리하는 Map 인터페이스 HashMap 클래스 활용하기 Map 인터페이스를 구현한 클래스와 가장 많이 사용되는 Map인터페이스 기반 클래스 Key - Value를 쌍으로 관리하는 메서드를 구현함 검색을 위한 자료구조 Key를 이용하여 값을 저장하고 key를 이용하여 값을 꺼내오는 방식 - hash 알고리즘으로 구현 됨 Key가 되는 객체는 중복될 수 없고 객체의 유일성을 비교를 위한 equals()와 hashCode() 메서드를 구현해야 함 package ch50; import java.util.Comparator; import java.util.TreeSet; public class Member implements Comparator { private int memberId;.. 2021. 5. 2.
Comparable, Comparator 인터페이스 정렬을 위해 Comparable, Comparator 인터페이스 구현 TreeSet 클래스 활용 객체의 정렬에 사용하는 클래스 Set 인터페이스를 구현하여 중복을 허용하지 않고, 오름차순이나 내림차순으로 객체를 정렬할 수 있음 내부적으로 이진검색트리(binary search tree)로 구현됨 이진검색트리에 저장하기 위해 각 객체를 비교해야 함 비교 대상이 되는 객체에 Comparable이나 Comparator 인터페이스를 구현 해야 TreeSet에 추가 될 수 있음 String, Integer등 JDK의 많은 클래스들이 이미 Comparable을 구현했다 Comparable 이용 package ch49; public class Member implements Comparable { private int.. 2021. 5. 2.