'Java'에 해당되는 글 6건
-
HashMap과 TreeMap은 언제 사용할까? 자바는 수많은 제네릭 컬렉션을 지원한다.그 덕에 우리는 개발할 때 List, Stack, Map, Set 등을 간편하게 활용할 수 있다. 그런데 제네릭 컬렉션 중 많은 종류는 클래스가 아닌 인터페이스 형식으로 지원된다.같은 자료 구조라고 하더라도 다른 방식으로 구현될 수 있기 때문이다. 가장 대표적인 자료 구조인 List 또한 ArrayList, LinkedList 등 여러 구현체가 있다. 이번 포스트에서 알아볼 Map 또한 HashMap과 TreeMap 등의 구현체들이 있다.이러한 구현체들은 저마다 존재 이유가 있어서, 그 특징을 알고 상황에 맞게 사용할 수 있어야 한다. 그리고 그 특징을 알기 위한 가장 좋은 방법은 각 구현체가 어떻게 인터페이스를 구현하는지 이해하는 것이다.이번 포스트에서는 Map ..
-
자바 람다에서 로컬 변수 사용하기 - local variables referenced from a lambda expression must be final or effectively final 자바 코드를 작성하다보면 콜백을 사용해야 할 때가 있다.콜백은 람다로 작성하는 일이 많은데, 이 때 다음과 같은 에러가 발생하는 경우가 있다.java: local variables referenced from a lambda expression must be final or effectively final 이번 포스트에서는 이 에러가 나는 이유와 이를 해결할 수 있는 여러 방법들을 소개하고자 한다.시나리오에러를 재현하기 위해 다음과 같은 상황을 가정해보자.긴 정수 배열에 대해 특정 작업을 반복해야 한다.중간 중간 진행 상황을 알고자 한다.이를 위한 메서드 runTasks()를 다음과 같이 작성했다고 하자.private static void runTasks(int[] array, Consumer onPro..
-
제미나이로 JMH 공부하기 - 1. JMH 입문 저번 포스트에서 제미나이가 작성해준 커리큘럼대로 실제 학습을 진행해보자.https://www.hyuni.dev/18 제미나이로 JMH 공부하기 - 0. 학습 플랜 짜기작년 6월, Medium에 Java의 Stream과 반복문을 비교하는 글을 올렸다.https://medium.com/better-programming/can-streams-replace-loops-in-java-f56d4461743a Can Streams Replace Loops in Java?Code readability, performance, and limitations of Stwww.hyuni.dev 이번 포스트는 커리큘럼의 첫 번째 모듈, JMH 입문이다. 이 모듈에 대한 목차는 다음과 같다.JMH란 무엇인가?JMH 구성하기기본적..
-
제미나이로 JMH 공부하기 - 0. 학습 플랜 짜기 작년 6월, Medium에 Java의 Stream과 반복문을 비교하는 글을 올렸다.https://medium.com/better-programming/can-streams-replace-loops-in-java-f56d4461743a Can Streams Replace Loops in Java?Code readability, performance, and limitations of Streamsbetterprogramming.pub Stream이 반복문을 대체할 수 있는 부분과 그러기 힘든 부분을 다루었는데,댓글 중 JMH로 성능 측정을 한다면 확연한 성능 차이를 볼 수 있을 것이라는 얘기가 있었다. JMH는 생소했기에 공부를 해야 했는데, 구글 제미나이(Gemini)를 활용해 학습 플랜을 짜고,이 플랜..
-
[Java] Getter / Setter 제대로 사용하기 자바에서 접근 제어자를 처음 배울 때 Getter와 Setter에 대해서도 같이 배우게 된다. 하지만 getter와 setter를 잘못 설명하고 있는 경우가 많은 것 같아 이들을 어떤 경우에 사용해야 하는지에 대해 적어보고자 한다. 잘못된 예제많은 예제들이 캡슐화라고 하면서 멤버 필드를 private으로 만들고, getter, setter 메서드를 통해 해당 필드에 접근하게 한다.public class Meaningless { private int value = 0; public int getValue() { return value; } public void setValue(int value) { this.value = value; }} 위의 코드는 멤버 필드를 public으로 두..
-
자바로 분수 나타내기 프로그래머스 문제 중 Lv 2짜리 아날로그 시계라는 문제를 봤다. 주어진 시간 범위 내에 초침이 시침, 분침과 겹치는 횟수를 세는 문제인데,이 횟수를 세는 것은 그렇게 어렵지 않았지만 난관은 시침, 분침, 초침이 모두 겹칠 때에는 한 번으로 세어야 한다는 점이었다. 이 부분에서 분수를 나타낼 필요성을 느껴 분수를 다루는 클래스를 작성해 보았다.생성자가장 먼저, 분수에 있어서 필요한 분자와 분모를 정수형으로 선언해 주었다. 값을 나타내는 용도의 클래스인 만큼, final을 붙여 불변성을 부여하였다.final로 선언된 원시 자료형이기 때문에, 이 두 값은 클래스 내부에서 관리함에도 불구하고 public으로 선언될 수 있다.외부에서 자유롭게 참조는 가능하지만, final이 붙었기 때문에 값을 변경할 수 없기 ..