JAVA/Java2021-2 (41) 썸네일형 리스트형 함수형 프로그래밍 람다식(lambda expression) 함수형 프로그래밍(람다식) functional programming (자바8 부터 제공) : 함수를 구현하고 함수를 호출함으로써 함수를 호출할 때 매개변수를 이용할 때, 매개변수를 기반으로 함수가 수행이 된다(이 함수는 외부에 있는 변수는 사용을 하지않는다.) 함수가 외부에 있는 변수를 사용하면 함수가 수행하면서 외부에 side effect을 일으켜 버그를 발생시킬 수 있는데, 매개변수를 받아 이 변수를 기반으로 내부에서만 수행되기 때문에 외부에 영향을 주지 않는다. So, 동시에 여러 함수를 호출 시 문제 발생되지않음. 내부적으로만 병렬처리 되기 때문에. 장점 : 소스가 간결해짐 단점 : 가독성이 떨어짐 실습 1. 함수형 인터페이스 생성(메서드는 하나만 등록되어있어야 사용가능하다) 2. main()함수.. 내부클래스 (inner class)2 지역(local) 내부, 익명 내부 클래스 지역 내부 클래스 : 지역 변수와 같이 메서드 내부에서 정의하여 사용하는 클래스 : 메서드의 호출이 끝나면 메서드에 사용된 지역변수의 유효성은 사라짐 : 메서드 호출 이후에도 사용해야 하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 메서드의 지역 변수나 매개변수는 final로 선언 실행 테스트 결과 package Basic_Grammar.chap6.ch01.Test02; class Outer{ int outNum=100; static int sNum=200; // 클래스를 스레드화 할 때 Runnable 타입 반환 Runnable getRunnable(final int i){ final int num=10; class MyRunnable implements Runnable{ int local.. 내부클래스 (inner class) 인스턴스 내부, 정적 내부 클래스 내부 클래스란? (클래스 내부에서만 사용하려고 선언한다) : 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함, 중첩 클래스라고도 부름. : 종류 ( 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스 1. 인스턴스 내부 클래스 : 외부 클래스가 생성된 후 생성됨. : 내부적으로 사용할 클래스를 선언함. : pirvate이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음.(private 권장) -위의 코드를 보면 InClass는 OutClass가 만들어진 후에 만들어지기 때문에 InClas.. HashMap 클래스 메서드와 구현실습 : 검색을 위한 자료구조 key:value 쌍으로 관리 (key는 중복될 수 없고 객체의 유일성을 비교하기 위한 equals(), hashCode() 메서드를 구현 해야함) HashMap hashMap=new HashMap(); 의 경우 HashMap 메서드 이용 hashMap.put(key:value); - key:value로 값 저장 hashMap.get(key); - key에 해당하는 값 받아오기 hashMap.remove(key); - key에 해당하는 값 지우기 hashMap.keySet(); - key값들의 집합을 받아온다 return 타입 set(key값은 유일한 값이기 때문에) hashMap.values(); - 리턴 Collection hashMap.entrySet(); hashMap.i.. Comparator는 언제 쓰는가? 이미 Comparable 이 구현되어있는것을 바꾸고 싶을 때 사용한다. 상황 예시) String의 경우 기본적으로 오름차순의 Comparable이 구현되어 있는데 이 경우 implements한 클래스를 만들어서 compare()함수를 재정의 할 때, 두 매개변수를 compareTo로 거꾸로 나온 값을 바꿔줄 수 있다. (오름차순의 경우 내림차순으로 바꿔줄 수 있고) 정의한 클래스를 Set정의 할 때 매개변수로 넣어 준다. 직접 실습) package Basic_Grammar.chap4.ch05DataStructureFramework; import java.util.TreeSet; public class MemberTreeSetTest2 { public static void main(String[] args.. Comparator 구현 클래스 정렬을 하는데 이용할 수 있다. Comparable과 Comparator의 차이 : Comparable의 경우 멤버 자신(this)과 비교하기 때문에 매개변수 하나 : Comparator의 경우 매개변수 두 개 비교대상, 앞에꺼에서 뒤에꺼 비교해준다 step1. 클래스 implements Comparator : 타입을 설정해주면 overriding 할 compareTo(지정해준타입 매개변수,지정해준타입 매개변수) 형태로 한다. step2. compareTo() 함수 재정의 비교하여 조건에 따라 return 값에 따라 오름차순 내림차순 설정해 줄 수 있다. public class Member implements Comparator{ private int memberId; private String .. Comparable 구현 정리 클래스 정렬을 하는데 이용할 수 있다. step1. 클래스 implements Comparable : 타입을 설정해주면 overriding 할 compareTo(지정해준타입 매개변수) 형태로 한다. step2. compareTo() 함수 재정의 비교하여 조건에 따라 return 값에 따라 오름차순 내림차순 설정해 줄 수 있다. public class Member implements Comparable{ private int memberId; private String memeberName; @Override public int compareTo(Member member) { // 오름차순 정렬 if(this.memberId>member.memberId){ return 1; }else if(this.mem.. TreeSet 클래스, 클래스 Comparable, Comparator : 객체의 정렬에 사용하는 클래스 left 트리 : 나보다 작은 값, right 트리 : 나보다 큰 값 : Set 인터페이스를 구현하여 중복을 허용하지 않고, 오름차순이나 내림차순으로 객체를 정렬할 수 있음. : 내부적으로 이진검색트리(binary search tree)로 구현 : 이진검색트리에 저장하기 위해 각 객체를 비교 : 비교 대상이 되는 객체에 Comparable이나 Comparator 인터페이스를 구현해야 TreeSet에 추가 될 수 있다. (String, Integer 같은 클래스의 경우 Comparable 혹은 Comparator이 구현되어있다) : 기본적으로 String, Integer은 구현되어있다? ex1) TreeSet 동작 확인 : 넣는 순서에 상관없이 출력을 시키면 정렬된 상태로.. 이전 1 2 3 4 5 6 다음