Java26 [Effective java] Comparable 구현 고려하기 목적 Comparable 인터페이스에는 compareTo 메서드가 있습니다. compareTo는 단순 동치성 비교뿐 만이 아닌 순서를 비교할 수 있고, 추가로 제네릭한 특징을 가지고 있습니다. Comparable을 구현했다는 것은 자연적인 순서가 있음을 뜻하게 되어 Arrays.sort()와 같은 메서드, 자동 정렬되는 컬렉션(ex. TreeSet) 등과 함께 사용하면 관리가 쉬워집니다. 단순히 Comparable을 구현해서 정렬만 쉽게 하면된다고 생각했는데, 몇 규약을 지키지 않을 경우 문제가 발생할 수 있다고 합니다. 그래서 오늘은 Comparable 인터페이스를 구현할 때 지켜야하는 규약과 규약을 지키지 않았을 때 문제점, 작성 요령에 대해 알아보고자 합니다. Comparable 인터페이스를 구현할.. 2023. 9. 2. [백준][JAVA] 11725: 트리의 부모 찾기 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 처음에 문제 이해를 잘 못했었다. 정확히 무엇을 출력해야하는 것인지를 이해하지 못했었는데 알고보니 노드 2번부터 N번까지 차례대로 부모노드가 몇번인지를 알려달라는 것 이었다. dfs를 적용하면 간단하게 해결할 수 있던 문제였다. 트리의 루트가 1번이기 때문에 dfs로 1번부터 순차적으로 방문을 체크하면서 확인해주면 된다. import java.util.*; import java.io.*; class Main{ static boolean[] visited; st.. 2023. 8. 26. [Effective java] 불필요한 객체 생성 피하기 목표 똑같은 기능의 객체를 여러번 생성하는 것 보단 객체 하나를 재사용하는 것이 나을 때가 많습니다. 이 점을 고려할 때. 피해야하는 방법과 권장되는 방법 등을 알아봅시다. 1. 문자열 생성에서의 불필요한 객체 생성 피하기 문자열을 선언하는 방법에는 String 리터럴과 new String() 두 가지가 있습니다. "abc" 리터럴 값을 사용하여 새로운 인스턴스를 만드는 대신 하나의 String인스턴스를 사용할 수 있습니다. 반면, new String("abc")는 새로운 인스턴스를 만들기 때문에 이를 반복문이나 빈번하게 호출되는 메서드 안에서 호출하게 된다면 불필요하게 매모리를 낭비하게 될 수 있습니다. 참고: "abc" vs new String("abc") 더 알아보기 https://je-pa.tis.. 2023. 8. 22. [JAVA] Supplier<T> 인터페이스 Supplier 인터페이스는 Java 8부터 추가된 함수형 인터페이스(Functional Interface) 중 하나로서, 데이터 공급자 역할을 수행하는 함수를 나타냅니다. Supplier 인터페이스의 메소드인 get()은 매개변수를 받지 않고, 데이터 값을 반환합니다. 즉, 파라미터를 받지 않고 값을 리턴하는 메서드를 나타내기 위해 사용됩니다. Supplier는 다양한 기능과 유연성을 제공하며, 람다 표현식 및 스트림 API와 함께 사용하여 코드를 간결하고 가독성 좋게 작성할 수 있습니다. package java.util.function; @FunctionalInterface public interface Supplier { /** * Gets a result. * * @return a result *.. 2023. 8. 22. 이전 1 2 3 4 ··· 7 다음 LIST