본문 바로가기

Android/Java7

[Java] Map 인터페이스와 HashMap 구분과 Map 인터페이스를 통해 HashMap을 사용하는 것이 좋은 이유 자바에서 키와 값의 쌍으로 데이터를 관리할 때, Map 인터페이스가 기본적으로 사용된다. 이 인터페이스는 각 키가 고유한 값을 가지도록 보장하며, 이를 통해 데이터를 효율적으로 저장하고 검색할 수 있게 해 준다. Map 인터페이스의 여러 구현체 중에서도 HashMap이 가장 널리 사용되지만, TreeMap이나 LinkedHashMap 같은 다른 구현체들도 특별한 사용 사례와 이점을 제공한다. Map interface의 구현체들에 대한 내용은 추후에 공부 후 블로깅 해 보겠다. 이번 글에서는 특히, Map 인터페이스를 통해 HashMap을 사용하는 것이 가지는 이점에 초점을 맞춰 보겠다. 이러한 접근 방식은 자바 프로그래밍에서 데이터를 효율적으로 관리하는 방법에 도움이 될 것 이다. HashMap을 직접 .. 2024. 4. 9.
[Java] 자바 빌더 패턴: 복잡한 객체 생성의 단순화와 한계점 탐구 회사에서 담당하게 된 부분의 코드 분석 중, 자바에서 많이 사용되는 디자인패턴 중 하나인 "빌더 패턴"에 대해 알게 되었다. 이에 빌더패턴의 사용 목적, 방법 그리고 이점에 대해 알아본 내용들을 정리해 두고자 한다. 자바에서 빌더 패턴(Builder Pattern)은 주로 복잡한 객체의 생성 과정을 단순화하기 위해 사용된다. 이 패턴은 객체의 생성과 표현을 분리함으로써, 동일한 생성 과정을 통해 서로 다른 표현 결과를 얻을 수 있게 해 준다. 빌더 패턴은 특히 많은 수의 매개변수를 가진 객체를 생성할 때, 그리고 이 매개변수 중 일부는 필수적이고 일부는 선택적일 때 유용하다. 빌더 패턴사용의 목적과 결과 목적: 복합 객체의 생성 과정을 단계별로 진행하여 최종적으로 객체를 안정적으로 생성한다. 결과: 클라.. 2024. 4. 9.
[Java] 오버로딩과 오버라이딩: 객체 지향 프로그래밍에서의 메소드 다형성 이해하기 이슈 수정을 위해 생성자 오버로딩을 사용할 필요가 생겼다. 이를 잊지 않기 위해 오버로딩에 대해 정리하려고 한다. 그 과정에서 오버라이딩과의 비교가 자주 나오기 때문에, 이 두 개념을 함께 정리하고자 한다. 오버로딩과 오버라이딩은 비록 서로 다른 목적과 작동 방식을 가지고 있지만, 이들은 메소드 재정의의 중요한 형태로, 객체 지향 프로그래밍에서 메소드의 다형성을 구현하는 데 필수적인 기술이다. 오버로딩(Overloading) 오버로딩은 메서드 오버로딩과 생성자 오버로딩 두가지 형태로 나뉜다. 오버로딩은 같은 이름을 가진 메소드나 생성자를 여러 개 정의할 수 있게 하며, 매개변수의 타입, 개수, 순서에 따라 구분된다. 이를 통해 메소드나 생성자에 다양한 입력을 처리할 수 있는 유연성을 제공한다. 1. 메소.. 2024. 4. 2.
[ Java ] 인터페이스(interface)의 핵심 이해: 주요 특징과 사용 예시 public interface ItemTouchHelperExListener { void onItemMoveCompleted(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder); } 인터페이스는 자바에서 매우 중요한 개념 중 하나로서, 자바 프로그래밍에서 객체 간의 상호작용을 위한 중요한 수단으로 사용된다. 객체가 어떤 메소드를 가지고 있어야 할 지를 정의 하지만, 이 메소드들이 어떻게 구현되어야 하는 지는 정의하지 않는다. 인터페이스는 오로지 추상 메소드(구현부가 없는 메소드)와 상수만을 멤버로 가질 수 있다. 인터페이스의 주요 특징 1. 추상 메소드 : 인터페이스 내의 모든 메소드는 기본적으로 추상 메소드이다. 즉, 메소드의 선언만 있고 구.. 2024. 4. 1.
[ Java ] Java에서 문자열 처리의 효율성을 높이는 방법: StringBuilder 활용하기 StringBuilder는 Java에서 문자열을 효율적으로 처리하기 위한 클래스다. 문자열 알고리즘 문제를 풀다가 알게된 자바 클래스인데, 일반적으로 문자열을 연결하거나 수정할 때 사용되며, 가변적인 문자열을 다루는데 유용하다. 기존의 String 클래스는 불변 이기 때문에 문자열을 수정할 때마다 새로운 문자열 객체를 생성하게 된다. 이로 인해 문자열 연산이 많은 경우 메모리와 성능에 부담을 줄 수 있다. 이러한 문제를 해결하기 위해 나온 것이 바로 StringBuilder 클래스 이다. StringBuilder는 가변적이며, 내부적으로 가변 크기의 문자열 버퍼를 가지고 있다고 한다. 따라서 문자열을 추가하거나 수정할 때마다 새로운 객체를 생성하지 않고도 효율적으로 처리 할 수 있게 되는 것이다. Str.. 2024. 3. 22.
[ Java ] Integer.parseInt(String s, int radix)를 활용한 자바에서의 진법 변환 기술 2진수를 10진수로 바꿔주는 로직을 짜다가 알게 된 메서드이다. 처음에는 char[] stringArray = str.toCharArray(); String binaryNumber = String.valueOf(stringArray); int decimalNumber = 0; int power = 0; for (int i = binaryNumber.length() - 1; i >= 0; i-- ){ int digit = Character.getNumericValue(binaryNumber.charAt(i)); decimalNumber += digit * Math.pow(2, power); power++; } 이런식으로 일일히 반복문을 돌며 2의 제곱수를 곱해주는 방식으로 구현을 해 줬었는데, 자바에 주어.. 2024. 3. 20.
[ Java ] 자바에서 "1"과 '1'의 차이점: 문자열과 문자 할당 이해하기 알고리즘을 풀다가 알게 된 사실을 정리 해 두고자 한다. 다음과 같이 String 값을 char[]로 바꾼 상황에서 반복문을 돌며. 문자 c가 "#"과 같을 경우 이진수인 "1"로 바꿔주고자 한 로직이었는다. 발견한 의문점은 stringArray[i] = '1'; 로 할 경우에는 에러가 뜨지 않는데, stringArray[i] = "1"; 로 했을 경우에는 다음과 같이 Type mismatch 에러가 난다는 것이었다. 위 현상이 왜 일어나는 것인지 찾아보니, stringArray[i] = '1';은 문자형(char)으로 '1'을 할당하는 것이므로 작은 따옴표 안에 있는 문자는 문자형으로 인식되며, char 타입에 저장이 된다. 반면에 stringArray[i] = "1";은 큰 따옴표(")로 감싸진 문자.. 2024. 3. 19.