# compareTo

18개의 포스트

PriorityQueue 정렬 방식을 언제 설정해야 할까?

들어가면서 > PriorityQueue를 사용할 때 정렬 방식을 설정해주지 않고 사용하다가 java.lang.ClassCastException 에러를 마주했다. PriorityQueue를 사용할 때 정렬 방식을 설정해줘야 하는 이유와, 설정해주지 않아도 되는 경우에 대해서 알아보았다. 어쩌다 문제에 직면했을까? 다익스트라 알고리즘을 풀다가 PriorityQueue에 임의의 객체를 반환해주도록 초기화 해주고 클래스를 실행하니 error 발생하였다. >(해당 알고리즘 문제의 자세한 내용 : https://velog.io/@ni0307/greedy-%EB%8B%A4%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%9D%BC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98) PriorityQueue를 사용할 때 정렬 방식을 설정해준 적이 없었는데 왜 그런걸까?라는 의문이 들었고 이유를 찾아보았다. 그 이유는 아래에서 설명한다

2023년 5월 23일
·
0개의 댓글
·
post-thumbnail

[JAVA] 자바의 정렬

배열과 리스트의 정렬 배열이나 Collection 프레임워크 등에서 sort() 를 사용하면 컴퓨터가 알아서 정렬을 해준다. 그 중 배열에서 sort()함수를 통해 정렬기능을 사용할 수 있다. 배열의 정렬 Arrays.sort() Arrays.sort() 여기서 사용되는 sort() 는 Comparable 구현에 의해 정렬된 것인데, 오름차순정렬이 디폴트이다. 내림차순 정렬로 수행하려면 이렇게 수행하면된다 Arrays.sort(str, Collections.reverseOrder()); 리스트의 정렬 Collections.sort() 아래서 정리할 건데 comparable or comparator 인터페이스를 사용하면된다 >배열과 리스트의 정렬 시간복잡도 비교 [따라서 A

2023년 4월 28일
·
0개의 댓글
·
post-thumbnail

[Java] Collection Exercise

🧩 컬렉션을 이용하여 Joy Restaurant의 메뉴관리 프로그램 만들기 > 💁‍ WELCOME ! Joy Restaurant의 chef들을 위한 메뉴관리 프로그램을 만들어주세요! 메뉴가 자주 바뀌고 추가되는 Joy Restaurant의 특성상, Dish의 추가, 전체 조회, 정렬 조회, 검색, 수정, 삭제의 기능이 있어야합니다. 또한 Course로도 정렬 및 검색이 되었으면 좋겠네요. ◼ DishDTO Class ◼ DishController Class ◼ 3 Classes implements Comparator ◼ Application Class ◼ Application Class

2023년 1월 8일
·
0개의 댓글
·
post-thumbnail

컬렉션_리스트(Collection_List)

💁‍♀️ 컬렉션(Collection)이란, 여러 개의 다양한 데이터들을 쉽고 효과적으로 처리할 수 있도록 표준화 된 방법을 제공하는 클래스들의 집합 (데이터를 효율적으로 저장하는 자료구조와 데이터를 처리하는 알고리즘이 미리 구현되어 있음) > 💁‍♀️ 리스트(List)란, 메모리가 허용하는 한 계속 해서 추가 할 수 있도록 만든 자료형 클래스. java.util.List 는 인터페이스 클래스이며, java.util.Collection 인터페이스를 구현한 것. 순서를 유지하고 중복 저장 가능 🔥중요🔥 📍 **Lis

2023년 1월 4일
·
0개의 댓글
·
post-thumbnail

API(Application Programming Interface)

💁‍♀️ API(Application Programming Interface)이란, 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 * 👀 Object ◼ Book Class ◼ Application1 Class ◼ Application2 Class > 🙋‍ 잠깐 ! 동일 객체와 동등 객체가 뭔가요? 동일 객체 : 주소가 동일한 인스턴스 동등 객체 : 주소는 다르더라도 필드 값이 동일한 객체 ◼ Application3 Class 📌 Ref. > 🙋‍ 잠깐 ! String과 StringBuilder의 차이점부터 알아봅시다! String 👉 불변 : 문자열에 + 연산으로 합치기 하는 경우, <span

2023년 1월 3일
·
0개의 댓글
·
post-thumbnail

compareTo로 값(숫자열/문자열) 비교하기

compareTo() 문자열과 숫자를 비교하여 int 값으로 반환해주는 함수이다. 문자열을 비교하는 경우 0: 두 문자열이 같은 경우 음수: 인자가 객체보다 사전적으로 순서가 앞인 경우 양수: 객체가 인자보다 사전적으로 순서가 앞인 경우 숫자를 비교하는 경우 0: 두 숫자가 같은 수인 경우 음수: 인자가 객체보다 큰 수인 경우 양수: 객체가 인자보다 큰 수인 경우 숫자열 비교 숫자열 비교는 기준값과 비교대상의 크기를 비교한 경과를 반환한다. 동일한 경우 0, 기준 값이 작은 경우 -1, 기준값이 비교대상보다 큰 경우 1을 반환하는 규칙을 따른다. 숫자열 타입은 Integer, Double, short 등을 비교할 수 있다. 기준값과 비교대상의 타입이 다르면 비교할 수 없다. 문자열 비교 문자열 비교하는 코드를 살펴보면 isLatin1() 메서드로 문자열이 LATIN1로 인코딩 되었는지,

2022년 10월 28일
·
0개의 댓글
·
post-thumbnail

자카드 유사도 구하기 Feat. 프로그래머스 [1차] 뉴스 클러스터링

1. 자카드 유사도란 > 두 집합 사이의 유사도를 측정하는 방법으로 (교집합 수)/(합집합 수)로 표현 집합 {1,3,4,5} 와 집합 {2,3,4,5}의 자카드 유사도를 구하면 다음과 같습니다. 교집합 : {3,4,5} 합집합 : {1,2,3,4,5} 자카도 유사도 : 3/5 = 0.6 2. 자카드 유사도 구현 방법 두 집합 A, B가 주어졌을 때, 각각의 집합을 일정 차순으로 정렬합니다. 그리고 각각의 집합을 가리키는 두 개의 포인터를 지정하여 각 포인터가 가리키고 있는 숫자나 문자열을 비교합니다. 비교했을 때 같으면 교집합 개수를 늘려주고, 비교했을 때 다르면 둘 중 사전 순서가 더 앞서는 숫자나 문자열이 있는 집합의 포인터를 다음으로 갱신해줍니다. 포인터가 둘 중 하나의 집합의 끝을 넘어섰을 때 종료하고, 결과로 나온 교집합 개수를 이용하여 합집합 개수를 구해줍니다. 합집합 개수는 (집합 A의 구성요소 개수) + (집합 B의 구

2022년 10월 24일
·
0개의 댓글
·

TIL: Comparable Interface

`public interface Comparable` This interface imposes a total ordering on the objects of each class that implements it. Comparable interface is used to order the objects of the user-defined class. It has only one method named `compareTo(Object)`. This method provides a single sorting sequence. List of objects that implement this interface can be sorted automatically by `Collections.sort(and Arrays.sort)`. Can be also used as keys in a sorted map or as elements in a sorted set, witho

2022년 9월 28일
·
0개의 댓글
·
post-thumbnail

programmers [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다. ![](http://t1.kakaocdn.net/welcom

2022년 7월 26일
·
0개의 댓글
·
post-thumbnail

Java/Kotlin - LocalDate 의 compareTo와 ChronoUnit

배경 두 날짜 사이의 간격을 구해야 했다. compareTo() 는 0보다 크다, 같다, 작다 로 대소비교를 해야한다는 사실은 알고있었지만, '왜 1, 0, -1같이 특정한 값이 아닌 대소비교를 해야할까?'라는 생각을 하며, '그러면 compareTo()는 언제 1, 0, -1이 아닌 다른 값 (2, 5, -7 등)을 반환할까?' 는 생각이 들어서 실험해보기로 했다. 잘못된 방법 (compareTo) 우선, day만 다르게 해서 실험해봤다. 결과는 테스트 성공이었다. 이제 year까지 다르게 해서 테스트해봤다. 결과는 <span style='co

2022년 7월 3일
·
0개의 댓글
·
post-thumbnail

Java 프로그래밍 : 객체지향 (4) Comparable - 객체 정렬

Comparable Comparable 인터페이스는 Array/ArrayList 를 알파벳순 혹은 숫자 오름차순/내림차순으로 정렬해주는 역할을 합니다. 사용을 위해서는 아래와 같이 Collections 클래스를 import 해줍니다. Integer 먼저 Integer 형 ArrayList의 나열입니다. Collections.sort(ArrayList 이름) 과 같은 형식으로 사용합니다. > Array의 경우에는 Arrays.sort(arr); String 사용자 정의 클래스 아래와 같은 ArrayList 가 있다. 이 경우에는 알파벳순으로 정렬할지, 오름차순으로 정렬할지, 내림차순으로 정렬할지 지정해야한다. 아래 코드로 작성된 dog.java 파일이 있다고 하자. 제일 먼저 implements Comparable 과 같은 형태로 implements 해주어야 한다. 안에 class명을 입력하는 이유는 typ

2022년 4월 19일
·
0개의 댓글
·
post-thumbnail

0712 - JAVA TreeSet/TreeMap

TreeSet / TreeMap 검색 기능을 강화시킨 컬렉션 이진트리를 사용하기 때문에 검색속도가 향상된다. 왼쪽 자식 노드 : 부모보다 작은 값 오른쪽 자식 노드 : 부모 보다 큰 값 이진트리 정렬 오름차순(작->큰) : 왼쪽노드 - 부모노드 - 오른쪽노드 내림차순(큰->작) : 오른쪽노드 - 부모노드 - 왼쪽노드 TreeSet 활용 > - 1. TreeSet 객체를 생성 > - 2. 새로운 요소 추가 ---> 이진트리가 확장되고 ----> 즉, 자동으로 정렬이 된다! > - 3. TreeSet안에 구성된 이진트리를 탐색하는 메소드 TreeSet의 범위 검색 메소드 TreeSet의 순회 > - Enhan

2021년 7월 12일
·
0개의 댓글
·
post-thumbnail

[Java] String.compareTo

String 개체를 사전 순서로 비교할 때 사용하는 메서드입니다. 최근에 이 메서드를 잘못 사용하여 고생한 경험이 있어서 정리합니다. "machine"과 "master"는 "ma"까지는 동일하고 다음 글자가 'c'와 's'로 달라집니다. index 0, 1은 동일하고, 2가 다른 상황이죠. 이 때 다음과 같이 다른 글자의 차이를 value로 반환합니다. 즉, value = 'c' - 's' = 99 - 115 = -16 이 반환됩니다. "app"과 "apple"처럼 길이가 짧은 쪽의 index가 끝날 때 까지 모든 글자가 같으면 문자열의 길이를 비교합니다. value = 3 - 5 = -2를 반환하여 길이가 짧은 쪽이 사전적으로 앞쪽 순서를 나타냅니다. 모든 글자가 같고, 길이도 같으면 0을 반환합니다. 정리하면, string.compareTo(anotherString)은 음수를 반환하면 string이 앞쪽 순서, 2

2021년 5월 25일
·
0개의 댓글
·

String클래스

String 클래스는 java.lang 패키지에 포함되어 제공됩니다. String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없습니다. 이러한 객체를 자바에서는 불변 객체(immutable object)라고 합니다. 즉, 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 수행하면, 기존 문자열의 내용이 변경되는 것이 아니라 내용이 합쳐진 새로운 String 인스턴스가 생성되는 것입니다. 대표적인 String 메소드 String 클래스의 메소드는 매우 다양하며, 그중에서 많이 사용되는 메소드는 다음과 같습니다. | 메소드 | 설명 | | :--- | :--- | | char charAt(int index) | 해당 문자열의 특정 인덱스에 해당하는 문자를 반환함.| | int compareTo(String str) | 해당

2021년 3월 18일
·
0개의 댓글
·
post-thumbnail

프로그래머스 Level1-10 | 문자열 내 마음대로 정렬하기

문제 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다. 제한조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 [sun, bed, car], n=1 -> [car, bed, sun] sun, bed, car의 1번째 인덱스 값은 각각 u, e, a 입니다. 이를 기준으로 strings를 정렬하면 [car, bed, s

2021년 1월 28일
·
0개의 댓글
·

자바 코드 - 두 개의 값 비교

비교하기 기본형의 경우는 비교 연산자에서 값의 비교가 가능하지만 참조형인 경우 참조가 동일한지 비교한다. 값을 비교하려면 equals()와 compareTo() 등의 방법을 사용한다. equals() 값이 같은 경우 true 아니면 false 를 반환한다. compareTo() 인수 쪽이 큰 경우 음수, 인수와 동일한 경우 0, 인수 쪽이 작은 경우 양수를 리턴한다. 문자열의 비교

2020년 12월 17일
·
0개의 댓글
·

Java - 1. JCF - List

List Interface 특징 Stack과 Queue는 LinkedList를 이용하여 사용할 수 있다. Stack 선입후출(FILO)의 자료구조 명령 자료 입력 : push(저장할 값) 자료 출력 : pop() => 자료를 꺼내온 후 꺼내온 자료를 stack에서 삭제한다. Queue 선입선출(FIFO)의 자료구조 명령 자료 입력 : offer(저장할 값) 자료 출력 : poll() => 자료를 Queue에서 꺼내온 후 꺼내온 자료는 Queue에서 삭제한다. 참

2020년 9월 14일
·
0개의 댓글
·

Comparable 인터페이스 구현을 통한 정렬

클래스가 정렬돼야 할 기준(오름차순/내림차순)이 하나인 경우 클래스가 Comparable 인터페이스를 구현하도록 설계할 수 있다. Comparable 을 구현하고 있는 클래스는 정렬이 가능하다는 것을 의미한다. 클래스.sort() 로 배열을 정렬할 때, Comparator를 지정해주지 않으면 저장하는 객체는 주로 Comparable을 구현한 클래스의 객체에 구현된 내용에 따라 정렬된다. Comparable : 기본 정렬기준을 구현하는데 사용 Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용 목표 - Monster 클래스의 랭킹을 정하는 코드를 리팩토링 하자 [기존 코드] 기본 정렬기준이 아닌 "Monster의 게임이 끝난 뒤, 최종 전진위치(fowardPosition)"를 기준으로 sort하여 ranking(ArrayList)에 저장하기 위해서 Comparator를 구현하였다. <

2020년 2월 12일
·
0개의 댓글
·