velog에서 이전한 글 입니다.
람다식
메서드 참조
//생성자를 호출하는 람다식도 메서드 참조로 변환할 수 있다.
Supplier<MyClass> s = () -> new MyClass();
Supplier<MyClass> s = MyClass::new;
//배열 생성의 경우
Function<Integer, int[]> f = x -> new int[x];
Function<Integer, int[]> f = int[]::new;
//매개변수의 개수에 따라 알맞은 함수형 인터페이스를 사용한다.
BiFunction<Integer, String, MyClass> bf = (i, s) -> new MyClass(i,s);
BiFunction<Integer, String, MyClass> bf = MyClass::new;
스트림
public static void main(String[] args) {
ArrayList<Integer> t = new ArrayList<>();
t.add(3); t.add(5); t.add(7);
Iterator<Integer> tt = t.iterator();
while (tt.hasNext()){
System.out.println(tt.next());
}
while (tt.hasNext()){
System.out.println(tt.next());
}
}
결과
357
iterator는 일회용이다. 컬렉션 요소를 모두 읽고나면 다시 사용할 수 없고 필요하다면 다시 생성해야 한다. 스트림도 마찬가지로 한번 사용하면 닫힌다.
스트림 메서드들 많아서 필요할 때 적절히 검색해 사용하자.
스트림 요소를 소모하는 연산을 최종연산이라 한다.
- 중간연산 :
map(), flatMap()........
- 최종연산 :
reduce(), collect().......
collect()는 Collector를 구현하거나 미리 작성된 Collectors의 static메서드를 이용한다.
+α
Arrays.sort 최악은 n^2
Collections.sort 최악은 nlogn
어떤 sort든 비교기준(compara)은 당연히 필요한거다.
blabla
자바 기본 패키지 속 클래스, 메서드, 인터페이스 등을 요리조리 만져보면서 상속을 따라가보는건 좋은 공부같다. 메서드 사용법과 함께 클래스를 어떻게 구성하고 제공해야 좋은지 가이드 삼을 수 있다.
'Language > Java' 카테고리의 다른 글
자바) Stream.of() (23-05-24) (0) | 2023.07.13 |
---|---|
자바) Stream.of/ Arrays.stream/ Integer <-> int (23-05-18) (0) | 2023.07.13 |
자바) 함수형 인터페이스/ util.function (23-05-16) (0) | 2023.07.13 |
자바) generics/ enum/ annotation (23-05-15) (0) | 2023.07.13 |
자바) regex/ generics (23-05-11) (0) | 2023.07.13 |