본문 바로가기

JAVA/기본11

Comparator 구현 Comparator 구현 자바의 대부분의 Collection이나 자료구조는 자료를 정렬할 수 있는 sort()와 같은 메서드들을 갖고 있다. 그런데 sort()와 같은 메서드는 자료를 비교하기 위해 함수형 인터페이스인 Comparator를 요구하곤한다. [Arrays의 sort()] [Stream의 sorted()] 특히 자바의 기본형이 아닌 객체간 비교를 하는 경우에는, 객체간 비교 방법을 Comparator로 명시해주어야 한다. 따라서 코딩을 하다보면 Comparator를 구현해야 할 순간이 반드시 온다. Comparator를 구현하는 것 자체는 그렇게 어렵지 않다. 그러나 항상 부등호 방향과 음수, 양수 중 어떤식으로 반환했을 때 오름차순, 내림차순이 되는지 맨날 헷갈렸기에 이에 대해 한번 제대로 .. 2022. 8. 11.
자료구조 초기화, List-Array 변환 자료구조 초기화, List-Array 변환 Array와 Map 그리고, Collection의 구현체인 List, Set의 초기화 방법을 알아본다. 그리고 필요할 때 맨날 까먹는 List와 Array간의 변환도 살펴본다. 1. 초기화 자료구조로 만들 데이터를 알고있을 때 되도록 한번에 각 자료구조를 초기화 하는 방법을 알아본다. ■ Array [Array 초기화] String[] string1 = new String[]{"hello", "hi"}; String[] string2 = {"hello", "hi"}; ■ List List.of()를 사용해서 초기화한다. [List 초기화] List stringList1 = List.of("hello", "hi"); //[1] List stringList2 = n.. 2022. 7. 15.
스트림(Stream) 스트림(Steam) 보통 많은 수의 데이터를 다룰 때는 컬렉션이나 배열 그리고 for문과 Iterator를 이용해서 코드를 작성한다. 그러나 이러한 방식으로 작성된 코드는 너무 길고 알아보기 어려우며 재사용성도 떨어진다. 또 다른 문제는 데이터 소스마다 다른 방식으로 다뤄야 한다는 것이다. Collection이나 Iterator과 같은 인터페이스를 이용해서 컬렉션을 다루는 방식을 표준화하기는 했지만, 각 컬렉션 클래스에는 같은 기능의 메서드들이 중복해서 정의되어 있다. 이런 문제점들을 해결하기 위해서 나온 것이 '스트림(Stream)' 이다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 스트림을 사용하면, 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도.. 2021. 12. 8.
Optional Optional Optional은 지네릭 클래스로 'T타입의 객체'를 감싸는 래퍼 클래스이다. 때문에 Optional 타입의 객체에는 모든 타입의 참조 변수를 담을 수 있다. 여기서 중요한것은 변수가 Optinal이라는 객체에 담아서 반환된다는 것이다. 이처럼 객체에 담아서 반환을 하면, 반환된 결과가 null인지 매번 if문으로 체크하는 대신 Optional에 정의된 메서드를 통해서 간단히 처리할 수 있다. ■ Optional 객체 생성 Optional 객체를 생성할 때는 of() 또는 ofNullable()을 사용한다. [Optional 객체 생성 예] Optional optVal = Optional.of("abc"); Optional optVal = Optional.of(new String("abc.. 2021. 12. 3.