Dev/Java

    [Java] 배열(Array) vs. 배열리스트(ArrayList) vs. 연결리스트(LinkedList)

    [Java] 배열(Array) vs. 배열리스트(ArrayList) vs. 연결리스트(LinkedList)

    들어가며 본 글에서는 같은 타입의 데이터를 많이 다룰 때 사용하는 자바의 순차적 자료구조 배열(Array)과 리스트(List), 특히 배열 리스트(ArrayList)와 연결 리스트(LinkedList)에 대해 비교해보겠습니다. 자료구조 측면에서 접근하는 글이므로 코드로 배열이나 리스트를 어떻게 사용하는지는 구체적으로 적지 않겠습니다. 아울러 메모리 구조나 물리적/논리적 주소, 시간복잡도 등에 대한 내용이 나오는데, 분량이 너무 많아질 것 같아서 구체적인 설명은 기재하지 않은 점 참고 바랍니다. 글 내용에서 잘못된 점이 있을 경우 언제든 피드백을 남겨주세요. 언제든 피드백 대환영입니다 :) 배열 (Array) | 기본 개념 배열이란 같은 데이터 타입의 변수들로 이루어진 자료구조로, 자바에서 기본적으로 지원..

    [Java] gradle 환경에서 JMH를 사용하여 벤치마킹하기

    [Java] gradle 환경에서 JMH를 사용하여 벤치마킹하기

    들어가며 최근에 진행했던 프로젝트에서 사용했던 메서드의 성능을 개선시킨 것 같은데, 정확히 얼마나 성능이 향상된 것인지 비교를 해보고 싶었습니다. 메서드 수행 시간을 측정하기 위해 여러 레퍼런스를 찾아봤는데, 그중에서 JMH(Java Microbenchmark Harness)을 활용하는 것이 가장 현대적이고 효율적이라고 생각되었습니다. 본 글에서는 gradle 환경에서 JMH를 활용하여 유닛 단위로 벤치마킹하는 방법에 대해 정리하겠습니다. 구글링해보면 대개 maven 환경에서 JMH를 많이 사용하고, gradle 환경 기반의 JMH 환경 설정 글은 별로 없었습니다. 그래서 gradle 환경에서 최대한 간단하게 JMH 환경 설정하는 방법을 적고자 했습니다. 개발 환경은 다음과 같습니다. OS : Windo..

    [Java] 람다식에서 메서드 참조/생성자 참조 사용법

    [Java] 람다식에서 메서드 참조/생성자 참조 사용법

    들어가며 Java 8 이상에서 람다식을 사용할 때 콜론 2개를 사용하는 경우가 있습니다. 이를 메서드 참조(Method Reference) 혹은 이중 콜론 연산자(::)라고 표현하는데요. 정식 명칭은 메서드 참조입니다. 그러면 메서드 참조는 어떨 때 사용할 수 있는 것인지, 그리고 어떻게 사용하는 것인지 간단하게 알아보겠습니다. 메서드 참조는 언제, 어떻게 사용할 수 있을까 메서드 참조는 람다식에서 파라미터의 중복을 피하기 위해 사용합니다. 파라미터가 중복되지 않았다면 메서드 참조 표현식은 사용 불가능합니다. 코드로 바로 보겠습니다. 인스턴스의 메서드를 참조하는 경우 public class Main { public static void main(String[] args) { List memberList ..

    [Java] 객체와 클래스, 인스턴스 간 차이

    [Java] 객체와 클래스, 인스턴스 간 차이

    본 글은 객체와 클래스, 인스턴스 간 차이를 명확히 정리하기 위해 전공 서적들을 참고하여 쓴 글입니다. 실질적인 코드 작성에 도움이 되는 내용보다는 객체 지향 프로그래밍(OOP)에 대한 개념적인 내용이 대부분이며, 그나마 있는 코드도 OOP를 처음 접하는 초심자분들을 위해 제일 간단한 수준으로만 작성했으므로 참고 바랍니다. 객체 (Object) 객체 지향 프로그래밍에서 '객체'를 이해하기 위해서는 현실 세계 속의 객체와 소프트웨어 관점에서의 객체를 구분할 수 있어야 합니다. 우선 현실 세계 속의 객체란 '세상에 존재하는 의사나 행위가 미치는 대상'을 의미합니다. 사실 이 정의는 네이버 사전에 등재되어 있는 것인데, 적절해 보여서 가져왔습니다. 눈에 보이는 대표적인 객체는 사람, 자동차, 건물 등이 있습니..