SIU
article thumbnail
[JAVA] HashMap Value, Key 정렬하기 [Comparator, 람다식]
개발 언어/Java 2023. 6. 16. 21:18

HashMap은 비선형 자료구조로 인덱스로 정렬하는 선형 자료구조와 정렬 방법이 다릅니다. HashMap의 Value나 Key 값으로 정렬을 하려면 우선적으로, HashMap(비선형 자료구조)를 List(선형 자료구조)로 바꿔줘야합니다. * 비선형 자료구조 : 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조, 트리나 그래프 해당 샘플은 제가 예시로 넣었습니다. Value 오름차순 정렬 1. Map의 entrySet() 메서드를 (싱글) 링크드 리스트로 변환시켜줍니다. 링크드 리스트로 변환하는 이유는 선형 자료구조로 바꿔주기 위함입니다. 2. Entry 내장함수인 compairngByValue()를 통해 정렬해줍니다. 이 정렬 방법은 value 값을 기준으로 오름차순 정렬이 디폴트 입니다. 3. fo..

article thumbnail
[#1 TroubleShooting] NaN 조건식 세울 때 isNaN()
개발 언어/JavaScript 2023. 1. 11. 11:25

JavaScript로 날짜를 입력하면 현재 날짜, 시간과 비교하여 남은 D-Day를 알려주는 미니프로젝트를 진행하던 도중 에러가 생겼다. D-DAY를 입력하는 Input 태그에 잘못된 날짜를 입력하면 NaN이 뜨는 것을 확인했다. NaN이 뜨는 이유는 Input 창에 입력한 날짜가 new Data에 맞지 않는 형태여서 그렇다. 경험 : input 창에 입력한 날짜가 NaN이면 비교 연산자로 분기하여 로직을 처리하려고 했다. const targetDate = new Date(dateFormat).setHours(0, 0, 0, 0); console.log(targetDate); // 잘못된 날짜 값입력하면 remaing과 targetDate 모두 NAN 발생 console.log(remaining === ..

article thumbnail
[#2 JavaScript] 엄격한 비교 연산자에서 변수와 객체 차이
개발 언어/JavaScript 2023. 1. 9. 04:23

자바스크립트의 느슨한 비교 연산자( Loose Equality ) 문제점 느슨한 동등 비교 연산자(==)와 엄격한 동등 비교 연산자(===)은 두 개의 피연산자에 대한 비교 연산을 수행합니다. ===의 동등 비교에서는 비교하려는 두 피연산자의 자료형이 일치하지 않더라도 형변환(Type Coercion)이 수행되지 않습니다. 엄격한 동등 비교 연산자(===)는 두 피연산자의 자료형과 값이 모두 일치할 때만 true를, 그렇지 않다면 false를 반환한합니다. 반면, 서로 다른 자료형을 가지는 두 피연산자를 느슨한 동등 비교 연산자(==)로 비교하면, JS 엔진은 양 측의 두 변수를 공통된 자료형으로 강제 형변환합니다. 이후 엄격한 비교 연산자(===)를 수행하는 방식으로 ==는 동작합니다. 따라서 느슨한 ..

[#01 JavaScript] var를 사용하지 않는 이유
개발 언어/JavaScript 2023. 1. 5. 05:17

자바스크립트의 변수 선언 키워드 : var, let, const 가 존재합니다. var는 ES6 이전에 사용됐고, 변수를 만들 떄 변수명 앞에 붙혀서 변수를 만들어줍니다. 그런데 현재 var는 현재 거의 사용하지 않습니다. var num = 12345 console.log(num) // 12345 var num = 545 console.log(num) // 545 num이 중복으로 사용이 됐는데 Error(오류)가 발생하지 않는다. 만약 큰 프로젝트에서 변수명을 똑같이 써도 Error가 발생하지 않아서 로직 상의 Error가 생겨도 찾기 힘들 것이다. 이러한 현상이 나타나는 이유는 Hoisting(호이스팅) 때문이다. 호이스팅? Hoisting은 var를 사용해서 변수 선언 했을 때 해당 변수의 선언부를..