Programming Language 7

[JAVA] Optional- of 와 ofNullable의 차이, orElse와 orElseGet의 차이

문자열을 BigDecimal 형태로 바꾸는데 Optional을 사용하다가 of, ofNullable, orElse, orElseGet을 알게되었는데 이름도 비슷하고 아무거나 쓰면 되지 않을까 싶다가 좀 찾아보니 분명한 차이가 있었다. of VS ofNullable 먼저 of와 ofNullable의 차이는 null을 허용할수 있냐 없냐이다. of를 사용할때 null이 있으면 NullPointerException이 발생한다. String str = null; BigDecimal a = new BigDecimal(Optional.of(str).orElse("0") ); System.out.println(a); of 대신 ofNullable을 써보면 String str = null; BigDecimal a = ..

[JAVA] list에 객체 add시 주의할 점

개발하다가 반복문을 사용하여 list에 객체를 추가해야 하는 코드가 있었는데, 출력해보니 모든 객체가 같은 값을 가지고 있었다. 다음과 비슷한 코드인데, List pList = new ArrayList(); Person p = new Person(); for(int i = 0; i < 3; i++) { p.setAge(30+i); pList.add(p); } for(int i = 0; i < 3; i++) { System.out.println(pList.get(i).getAge()); } 이 코드를 실행해 보면 30 31 32 로 찍히지 않고 모두 32로 찍히는 것을 볼 수 있다. 이유는 같은 메모리 주소값을 사용하기 때문이다. JAVA 소스 내에서 new Person(); 를 수행하는 순간 하나의 객체..

[JAVA] java.sql.Date vs java.util.Date

spring으로 개발하다 보면 Date 자료형을 써야할 때가 많은데, import 하려고 보면 보통 java.sql.Date와 java.util.Date 두가지 타입이 있다. 우선 java.sql.Date는 java.util.Date를 상속한 것. java.sql.Date : JDBC등을 이용해서 DB에 격납된 날짜나 시각정보를 데이터로서 추출하거나 - 데이터베이스에 격납할 때의 영역으로 사용하며, 문자열 형식이 "2008-12-30 12:30:20" 와 같은 형태의 데이터 에 특화해서 사용하는데에 적합하다. - 연월일시분초등의 요소를 따로 따로 분리하지 않고 하나의 정보로서 다룬다. - 해당 클래스의 사용 목적은 년도, 월, 일을 유지하는 SQL 데이터를 다루기 위함이다. - 시간 정보는 다루지 않고 ..

[Python] ModuleNotFoundError: No module named 에러 해결

import dateutil 이 안돼서 찾아보니 pip install python-dateutil을 해주래서 해주었는데도 안됨. pip install python-dateutil을 해주면 계속 Requirement already satisfied 어쩌구 하면서 이미 설치되었다고 한다. 더 구글링 해보니 시스템 환경변수를 추가해줘야 한다고 한다. (아무래도 python 설치하고 모듈을 처음 install 해서 그렇지 않을까 예상된다) 모듈 설치 경로 확인 우선 pip install python-dateutil을 해주고 Requirement already satisfied 뒤에 붙은 경로를 복사해준다. ( 내 경우 c:\users\*******\appdata\local\programs\python\pytho..

[Python] list, dict 자료형

1. list 선언 빈 리스트 만들기 list = [] list = list() 정해진 범위로 리스트 만들기 list = list(range(0, 10)) 크기가 정해진 리스트 만들기 list = [0 for i in range(n)]# 모두 0으로 관련 메소드 list.append(n) : 추가하기 list.remove(n) : 제거하기. 가장 앞에 있는 n 제거 list.sort(key = None, reversed = False) : 정렬하기 list.clear() : 초기화하기 ( list = []와 동일) 중복 없는 리스트 만들기 -> set() 사용 list = [1, 1, 1] list = set(list) 2. dict 선언 빈 dict 만들기 dict = dict() dict = {} 특..

[JAVA] Stack

Stack 사용 그냥 짝맞는거 찾아서 하나하나 제거하는 식으로 풀었었는데 정확성은 100%이지만 효율성에서 다 틀렸다. 찾아보니 Stack으로 푸는 방법이 있다해서 알게 되었다. 다행히 학교다닐 때 배운 개념과 코드가 거의 유사해서 이해하는데는 어려움이 없었다. 선입선출(FIFO) 데이터 추가 : push 데이터 꺼내기 : pop (제일 나중에 추가한 것부터 꺼냄) 코드 Stack stack = new Stack(); // Stack에 데이터 추가 stack.push("A"); stack.push("B"); stack.push("C"); // Stack에서 데이터 꺼내기 System.out.println(stack.pop()); // ==> C // Stack의 최상단 값 출력(제거하지 않음) Syste..