[Java 기능] 스트림
·
Java & Kotlin
스트림(Stream) 자료의 대상과 관계없이 동일한 연산 수행 (배열, 컬렉션 대상) 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함 자료 처리에 대한 추상화가 구현 되었다고 함 한번 생성하고 사용한 스트림은 재사용 불가능 연산 수행 시 스트림은 소모됨 다른 연산을 수행하기 위해 스트림 재생성 해야함 IntArrayStreamTest.java package ch05; import java.util.Arrays; import java.util.stream.IntStream; public class IntArrayStreamTest { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; IntStream is = Arrays.stream..
[Java 기능] 객체지향 프로그래밍 vs 람다식
·
Java & Kotlin
예제 코드 문자열 두개를 연결하여 출력하는 예제 StringConcat.java package ch04; public interface StringConcat {// 인터페이스 public void makeString(String s1, String s2); } StringConcatImple.java package ch04; public class StringConcatImple implements StringConcat {// 인터페이스 구현 클래스 @Override public void makeString(String s1, String s2) { System.out.println(s1 +',' + s2); } } StringConcatTest.java package ch04; public clas..
[Java 기능] 함수형 프로그래밍과 람다식 문법
·
Java & Kotlin
람다식 자바는 객체지향 프로그래밍 방식으로 기능을 수행하기 위해 객체를 만들고 멤버변수를 선언하고 기능을 수행하는 메서드를 구현해야 함 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라고 함 코드는 간결해지지만 가독성이 떨어질 수 있음 주로 간단한 표현일 경우 많이 사용 함수형 프로그래밍 (Functional Programming) 함수의 구현과 호출만으로 프로그램이 수행되는 방식 함수 내부에서 외부 자료를 사용하지 않기 때문에 부수적인 영향(side effect)를 주지 않음 여러 자료가 동시에 수행되는 병렬처리가 가능 함수의 기능이 자료에 독립적임을 보장 동일한 input에 대한 동일한 output을 보장하고, 다양한 매개변수에 대해 동일한 기능 제공 람다식 문법 함수의 이름은 없음 (익..
[Java 기능] 중첩 클래스 (2)
·
Java & Kotlin
지역 내부 클래스 메서드 내부에 정의하여 사용하는 클래스 메서드의 호출이 끝나면 지역변수의 유효성은 사라짐 반면 지역 내부 클래스 안에서 사용되는 메서드의 지역 변수나 매개변수는 final로 선언됨 AnonymousInnerTest.java Runnable : 클래스를 쓰레드화 하는데 필요한 run 메서드를 구현할 때 사용하는 인터페이스 지역변수는 메서드가 호출될 때 생성되고 호출이 끝나면 소멸됨 (스택 메모리에 존재) 하지만 지역 내부 클래스의 run() 메서드는 getRunnable 메서드가 호출되고 난 후에도 또 호출될 수 있음 따라서 컴파일러가 자동으로 매개변수와 지역변수를 final로 설정함 → 변수의 값을 바꿀 수 없음 MyRunnable 클래스를 사용하려면 getRunnable 메서드를 호출..
[Java 기능] 중첩 클래스 (1)
·
Java & Kotlin
내부 클래스(Inner class) 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스(outer class)와 밀접한 관련이 있는 경우 많음 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용 중첩 클래스라고도 함 외부 클래스(outer class)의 private 변수 사용 가능 종류 : 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명 내부 클래스 익명 내부 클래스가 가장 많이 사용됨 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 (private으로 선언하는 것을 권장) 외부 클래스가 생성된 후 생성됨 private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 OutClass outClas..
[Java 자료구조] Map 인터페이스 활용
·
Java & Kotlin
HashMap 클래스 가장 많이 사용되는 Map 인터페이스 기반 클래스 검색을 위한 자료구조 key-value를 쌍으로 관리하는 메서드를 구현 key를 이용하여 값을 저장하고 값을 꺼내오는 방식 (hash 알고리즘) key가 되는 객체는 중복될 수 없고 유일성을 비교하기 위한 equals(), hashCode() 메서드 재정의 필요 HashMap 메서드 V put(K,V) : 요소 추가 V get(K) : K를 key로 갖는 value 가져옴 Set keySet() : 모든 key 출력 Collection values() : 모든 value 출력 boolean containsKey(Object key) : 해당 key가 있으면 true 반환 boolean containsValue(Object value)..
[Java 자료구조] Comparable과 Comparator 인터페이스
·
Java & Kotlin
TreeSet 클래스 객체의 정렬에 사용 Set 인터페이스를 구현하여 중복을 허용하지 않고 오름차순이나 내림차순으로 객체 정렬 가능 내부적으로 이진 검색 트리(Binary Search Tree)로 구현됨 BST에 저장하기 위해 각 객체의 비교 필요 (추가할 위치 지정) 비교 대상이 되는 객체의 Comparable이나 Comparator 인터페이스를 구현해야 요소를 추가할 수 있음 String, Integer등 JDK의 많은 클래스들이 이미 Comparable을 구현했음 이전 코드 [Java 자료구조] Set 인터페이스 활용 HashSet 클래스 가장 많이 사용되는 Set 인터페이스 기반 클래 멤버의 중복 여부를 체크하기 위해 인스턴스의 동일성을 체크해야 함 동일성을 구현하기 위해 HashSet이 관리할 ..
[Java 자료구조] Set 인터페이스 활용
·
Java & Kotlin
HashSet 클래스 가장 많이 사용되는 Set 인터페이스 기반 클래 멤버의 중복 여부를 체크하기 위해 인스턴스의 동일성을 체크해야 함 동일성을 구현하기 위해 HashSet이 관리할 클래스의 equals(), hashCode() 메서드 재정의 필요 이전 코드 [Java 자료구조] List 인터페이스 활용 예제 코드 멤버십 관리 프로그램 Member.java package ch11; public class Member { private int memberId; private String memberName; public Member(int memberId,String memberName) { this.memberId = member.. suaring.tistory.com MemberHashSet.java ..
[Java 자료구조] Iterator
·
Java & Kotlin
Iterator Collection 요소를 순회하기 위해 사용 순서가 있는 List 인터페이스의 경우 Iterator를 사용하지 않고 get(i) 메서드를 활용할 수 있음 반면 Set 인터페이스는 get(i) 메서드가 제공되지 않으므로 Iterator를 활용하여 요소를 순회함 Iterator 메서드 boolean hasNext() : 이후에 요소가 있는지 체크하는 메서드, 있으면 true를 반환 E next() : 다음에 있는 요소를 반환 이전 코드 removeMember 메서드 public boolean removeMember(int memberId) { Iterator ir = arrayList.iterator();// Iterator 객체 생성 while(ir.hasNext()) { Member m..