본문 바로가기

프로그래밍/자바21

[JAVA] 자바 BufferedReader 사용법 [JAVA] 자바 BufferedReader 사용법 자바에서 입력을 받을 때 Scanner 클래스로 입력을 받아왔었다. BufferedReader가 사용하기 불편해서 Scanner가 등장한 걸로 알고 있지만 백준 문제를 풀다 보면 Scanner를 사용했을 때 입력 자체에서 시간 초과가 걸리는 경우가 많아서 BufferedReader를 다시 사용하게 되었다. Scanner는 내부적으로 정규 표현식이 너무 많이 적용되어있어서 parse 할 때는 편리하지만, 성능이 희생당한다. 추가로 출력을 해주는 BufferedWriter도 있지만, 출력을 할 때 StringBuilder에 담아서 출력만 해도 출력 시간 초과는 해결된다. 이 글에서는 BufferedReader만 간단하게 사용하는 법을 정리하기로 했다. Bu.. 2022. 3. 17.
[JAVA] 자바 Iterator와 ListIterator 사용법 [JAVA] 자바 Iterator와 ListIterator 사용법 자바에서는 Collection 인터페이스를 구현한 자료구조인 ArrayList, LinkedList, HashSet, TreeSet 등의 요소를 하나씩 반복하여 모든 요소를 확인할 수 있는 Iterator (단방향)와 ListIterator(양방향)가 있습니다. Iterator 구현도 인터페이스가 추상메서드를 갖고 있다면 해당 인터페이스를 구현하는 클래스는 모두 해당 메서드의 구현부를 작성해야 합니다. Iterator는 iterator()라는 함수명을 갖고 있는 추상 메서드가 반환을 합니다. iterator() 추상 메서드의 위치는 Iterable이라는 인터페이스에서 작성을 해뒀습니다. 결국 Iterable을 구현한 모든 클래스는 iter.. 2022. 3. 16.
[JAVA] Comparable과 Comparator 사용법 [JAVA] 자바 Comparable과 Comparator 사용법 자바에서 Comparable과 Comparator은 둘 다 인터페이스이며, 정렬을 위해서 사용한다. 인터페이스이므로 구현을 통해 사용해야 하며 기본형 비교가 아닌 객체 비교를 위해 만들어졌다. 결론부터 말하자면, Comparable은 객체 내부에 비교 기준을 부여하여 다른 객체와 비교를 하는 것이고, Comparator은 객체 외부에서 비교할 두 객체를 비교하여 비교 기준으로써의 역할을 한다. 여기서 주목할 점은 정렬을 해주는 것이 아니라, 비교 기준을 제공해준다는 점이다. 직접적으로 정렬을 진행하는 부분은 유틸 클래스가 처리해준다. 배열의 정렬을 직접 구현해보았다면 두 요소를 비교할 때 비교 연산자 크기 비교를 통해 true, false.. 2022. 3. 15.