본문 바로가기

Programming/Java18

자바 Map관련 알고리즘 문제 리팩토링 과정 기록 정말 오랜만에 글을 쓴다. 이제부턴 조금 편하게 글을 써 내려가도록 마음을 먹었다. 그리고 말투도 편하게 독백체로... 독백체가 좀 더 감정이 잘 실리고 글도 술술 잘 적힌다. 오늘 포스팅은 백준 알고리즘 10816번을 풀다가 초기 코드에서 리팩토링을 해간 과정이 재밌어서 기록해 둔다. 먼저 백준 알고리즘 10816번에 대해 단계별로 풀어가고 있는데 현재는 집합과 Map 단계인데 이 문제가 실버 4 수준인지는 잘 모르겠다. Map이라는 자료구조가 들어가서 그런가... 문제 자체는 굉장히 직관적이게 숫자 카드의 개수를 Map에다가 저장하면 된다. 아래는 초기 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOE.. 2023. 12. 1.
[Java] 자바 함수형 인터페이스(Functional Interface) 2022.06.08 - [Programming/Java] - [Java] 자바 람다식(Lambda Expression)이란? [Java] 자바 람다식(Lambda Expression)이란? 자바 8부터 추가된 스트림(Stream)을 사용하기 위해서는 람다식(Lambda Expression)의 이해가 필수적입니다. 이번 포스팅에서는 람다식에 대해 알아보도록 하겠습니다. 람다식(Lambda Expression) 이란? 람다 hyunipad.tistory.com 람다식은 함수형 인터페이스를 반환하게 되는데, 이 함수형 인터페이스는 자주 쓰는 패턴이 정해져 있습니다. 파라미터가 있거나 없거나, 리턴 값이 있거나 없거나 달라지는 것은 람다식을 통해 구현되는 구현부입니다. 자바에서는 빈번히 사용되는 함수형 인터페이.. 2022. 6. 22.
[Java] 자바 람다식(Lambda Expression)이란? 자바 8부터 추가된 스트림(Stream)을 사용하기 위해서는 람다식(Lambda Expression)의 이해가 필수적입니다. 이번 포스팅에서는 람다식에 대해 알아보도록 하겠습니다. 람다식(Lambda Expression) 이란? 람다식(Lambda Expression)이란 메서드를 하나의 식으로 표현한 것입니다. 메서드를 식으로 표현한다면 메서드의 이름이 필요 없기 때문에 람다식은 익명 함수(Anonymous Function)의 한 종류로 볼 수 있습니다. 기존의 메서드들은 아래와 같이 사용하였습니다. public static void main(String[] args) { system.out.println(hello()); } public static String hello() { return "hel.. 2022. 6. 8.
[Java] 자바 내장 정렬 함수 - Arrays.sort() 데이터들을 정렬시킬 때, 어떤 정렬 알고리즘을 사용해야 하는지 판단하는 중요한 요소중 하나는 시간 복잡도입니다. 자바 내부에서 사용하는 정렬은 시간 복잡도가 얼마인지 알 필요성이 있다고 생각합니다. 이번 포스팅에서는 자바의 내장 정렬 함수 중 하나인 Arrays.sort()를 알아보도록 하겠습니다.(JAVA 8 기준) java.util.Arrays.sort() Arrays.sort()는 내부적으로 DualPivotQuicksort.sort()를 호출한다. 퀵 정렬의 시간 복잡도는 일반적으로 최선의 경우에는 O(nlogn)을 가지고, 최악의 경우에는 O(n^2)를 가진다. 주석을 해석해보면 DualPivotQuicksort.sort()는 최악의 시간 복잡도를 갖게 하는 많은 데이터 셋들에 대해서도 O(nl.. 2022. 4. 30.
[Java] 자바 Enum 클래스 사용법 정리 Enum 이란? Enum은 열거형(enumrated type)이라고 부르며, 서로 연관된 데이터를 가진 상수들의 집합을 관리해주는 클래스입니다. public enum Day { 월, 화, 수, 목, 금, 토, 일 } Enum을 사용하면 다음과 같은 장점이 있습니다. Enum의 열거체를 비교할 때, 값뿐만 아니라 타입까지 체크하기 때문에 안정적입니다. 깔끔한 코드 작성이 가능합니다. 열거체를 값이 변경되더라도 다시 컴파일할 필요가 없습니다. Enum 사용법 제가 생각하는 Enum의 가장 큰 장점은 열거체에 원하는 상수값을 명시할 수 있기 때문에, 값을 전달할 때 상수값이 무엇인지 신경 쓰지 않아도 된다는 것입니다. 아래의 코드를 보겠습니다. public enum Day { 월(1), 화(2), 수(3), .. 2022. 3. 18.
[Java] Setter를 사용할 때 주의할 점(Feat. 불변객체) 자바(Java)를 사용해서 애플리케이션을 개발할 때, 대부분의 개발자는 객체를 사용합니다. 그 객체 안에는 여러 가지 메서드가 존재하지만 대표적으로 Getter와 Setter가 있습니다. Getter는 값을 얻기 위해서 필수적이지만 Setter는 필수적이지는 않습니다. 그 이유는 생성자가 있기 때문입니다. 하지만 많은 개발자들이 Setter의 편리함 때문에 많이 사용하곤 합니다. 이번 포스팅에서는 Setter를 사용할 때 주의할 점에 대해 알아보도록 하겠습니다. 기본형 vs 참조형 자바에는 대표적으로 두가지 변수가 존재합니다. 바로 기본형과 참조형입니다. 기본형과 참조형의 가장 큰 차이점은 변수를 저장하는 방법에 차이가 있습니다. 2021.01.05 - [Programming/Java] - 자바 기본형과.. 2022. 3. 17.
[Java] 자바 환경변수 설정하기 자바 환경변수 설정 자바를 처음 설치했을 때, OS가 JDK를 참조할 수 있도록 그 경로들을 환경변수로 설정해야 합니다. 자바 환경변수는 아래의 순서에 따라 설정합니다. JAVA_HOME 등록 CLASS_PATH 등록 bin폴더 Path 등록 확인 JAVA_HOME 등록 1. 설정 클릭 2. 설정 > 시스템 3. 설정 > 시스템 > 정보 4. 설정 > 시스템 > 정보 > 고급 시스템 설정 5. 설정 > 시스템 > 정보 > 고급 시스템 설정 > 환경 변수 6. 시스템 변수 새로 만들기 클릭 7. 변수 이름 : JAVA_HOME , 변수 값 : C:\Program Files\Java\jdk1.8.0_251 (자신의 자바 설치 경로) CLASS_PATH 등록 1. 새로 만들기 클릭 2. 변수 이름 : CLAS.. 2022. 3. 16.
자바 다형성(Polymorphism) 다형성이란 "다양한 형태를 가진 성질"입니다. 자바에서 다형성을 이용한 기법들은 오버 로딩, 오버 라이딩, 형 변환 등이 있습니다. 자바에서 다형성을 사용하는 이유는 코드의 절감 때문입니다. 똑같은 형태를 가진 요소들을 재사용하거나 기능을 조금 수정해서 사용하는 것이죠. 이번 포스팅에선 형변환중 하나인 업 캐스팅, 다운 캐스팅에 대해 알아보겠습니다. 오버 로딩과 오버 라이딩이 궁금하신 분들은 아래의 게시글을 참고해주세요. 2021/01/06 - [Java] - 자바 상속과 오버 라이딩 자바 상속과 오버라이딩 상속이란 무엇일까요? 부모님에게 상속을 받으면 부모님이 가지고 있는 것의 모든 것들을 물려받을 수 있습니다. 자바에서의 상속은 기존 클래스의 변수나 메서드를 다른 클래스에서 재사용하 hyunipad... 2021. 1. 9.
자바 instanceof 연산자 instanceof 연산자 어떤 객체에 대한 is a (상속) 관계를 판별하는 연산자 주로 if문을 사용하여 형 변환이 가능한 지 여부를 판별한다. instanceof의 결과가 true이면 형 변환이 가능하다. instanceof 기본 문법 if ( 레퍼런스 변수명 instanceof 클래스명 ) {} => 레퍼런스 변수명 => 클래명으로 다운캐스팅 또는 업캐스팅이 일어난다. if문의 조건식인 '레퍼런스 변수명 instanceof 클래스명' 이 true일 경우에는 레퍼런스 변수명이 클래스명(형 변환할 클래스)으로 업 캐스팅 혹은 다운 캐스팅이 가능합니다. 하지만 다운캐스팅인 경우에는 업 캐스팅이 먼저 발생한 후 다운 캐스팅이 가능한데 instanceof 연산자를 통해 다운 캐스팅이 가능한 지 판별을 하면.. 2021. 1. 8.
자바 업캐스팅, 다운캐스팅 업 캐스팅 서브클래스에서 슈퍼클래스로 참조형 형 변환하는 것 자동 형 변환(묵시적 형 변환)이 일어남 참조 가능한 영역이 축소된다. 서브클래스 인스턴스의 멤버 중 공통 항목을 제외한 나머지를 포기 선안 하는 것 but 하나의 슈퍼클래스 타입으로 여러 서브클래스 인스턴스를 참조할 수 있다. 다운 캐스팅 슈퍼클래스에서 서브클래스로 참조형 형 변한 하는 것 강제 형 변환(명시적 형 변환) 필수 참조 가능한 영역이 확대된다. 대부분의 다운 캐스팅은 혀용 되지 않는다. 이미 업 캐스팅된 레퍼런스를 다시 다운 캐스팅하는 경우에만 안전하다!! 코드 예시 public class CastingEx { ​ public static void main(String[] args) { SuperClass superclass = .. 2021. 1. 7.
반응형