자바에서 최소나 최대 원소를 찾을 흔히 사용되는 3가지 코딩 스타일에 대해서 알아보겠습니다. Loop 제일 먼저 반복문을 통해 각 원소에 하나씩 접근해서 최대값을 구하는 다음과 같은 고전적인 코드를 생각해볼 수 있습니다. 반복문(for)을 이용해서 지속적으로 변수(max)에 새로운 값을 할당하는 방식이 전형적인 명령형 프로그래밍(Imperative programming) 스타일을 따르고 있습니다. 많은 프로그래머들에게 가장 익숙한 방법이지만, 고수준의 비지니스 로직 중간에 이러한 저수준의 코드가 들어가게 되면 가독성에 나쁜 영향을
자바에서 리스트를 순회하는 4가지 방법에 대해서 알아봅시다. 다음와 같이 5가지 과일 문자열을 담고 있는 리스트를 순회하면서 원소를 하나씩 출력해보겠습니다. 전통적인 For 루프 그냥 평범한 For 루프문을 사용하여 마치 배열을 순회하는 것과 동일한 방식으로 순회할 수 있습니다. 하지만 이 방법은 E get(int index) 메소드를 가지는 List 타입의 객체 대상으로만 사용할 수 있습니다. 상위 타입인 Collection이나 Set과 같은 이종 타입의 객체 대상으로는 사용이 불가한 방법입니다. Iterator 위의 대안 중 하
리스트를 순회하면서 특정 원소를 삭제하고 싶을 때가 있습니다. 예를 들어, 다음과 같이 알파벳과 숫자가 섞여있는 리스트가 있다고 가정해봅시다. 저는 이 리스트에서 숫자인 원소들은 모두 삭제하고 싶습니다. ConcurrentModificationException 발생 가장 먼저 떠오르는 방법은 boolean remove(Object o) 메소드를 사용하는 것입니다. for 루프를 돌면서 해당 원소가 숫자인지 체크 후에 숫자이면 remove 메소드를 호출합니다. 하지만 위 코드는 다음과 같은 ConcurrentModificationEx
자바6에서 추가된 NavigableSet에 대해서 알아보도록 하겠습니다. NavigableSet은 SortedSet을 확장한 인터페이스입니다. 따라서 기존 SortedSet 대비 추가된 기능 위주로 살펴보는 게 좋을 것 같습니다. 객체 생성 자바에서 제공하는 NavigableSet 인터페이스의 대표적인 구현 클래스는 TreeSet 입니다. 따라서 TreeSet 객체를 생성 후에, NavigableSet 타입 변수에 할당하기면 하면 됩니다. 역순 접근: descendingIterator, descendingSet SortedSet을
SortedSet 사용법에 대해서 알아보록 하겠습니다. SortedSet은 원소들이 정렬되어 있는 Set입니다. 따라서 SortedSet 하여금 객체 간 대소 비교가 가능한 상황을 만들어줘야 합니다. 여기서 "객체 간 대소 비교가 가능한 상황"이란 다음 2가지로 생각해볼 수 있습니다. Comparable 인터페이스를 구현하고 있는 클래스의 객체를 원소로 사용 Comparator 인터페이스를 구현한 대소 판단을 위한 로직을 SortedSet 객체 생성 시에 넘김 본 포스팅에서는 Comparable 인터페이스를 구현하고 있는 Strin