본문 바로가기

dev/자바

(27)
Java REST API 연계 자바를 통해 REST API 연계를 할 수 있습니다. 코드를 작성하는 게 어려울 수도 있는데 저는 최대한 간단히 해보려고 노력했습니다. main 함수부터 먼저 보면 22~26라인은 헤더 정보들을 map에 추가하고 있고 28~31라인은 파라미터 정보들을 map에 추가하고 있습니다. 33라인은 url 주소이고 36라인은 POST 메소드 요청을 처리하는 postHttpsApi 함수에 앞에서 작성한 헤더, 파라미터, url 주소를 전달해서 호출하고 있습니다. 이제 postHttpsApi 함수를 보게 되면 47~48라인은 URL 객체를 통해 HttpsURLConnection 객체를 할당받고 있습니다. 50라인은 요청 메소드를 설정하고 52~59라인은 HttpsURLConnection 객체에 헤더 정보를 설정하고 ..
Java Collection forEach 자바 컬렉션 조회할 때마다 iterator 사용하는 것은 번거로운데 forEach를 사용하면 쉽게 조회할 수 있습니다. 위의 예제 코드를 보면 단순히 forEach를 통해 조회할 수 있음을 알 수 있습니다. iterator를 쓰는 것보다 코드 라인수도 줄일 수 있고 가독성도 좋기 때문에 forEach를 사용하는 것이 좋을 거 같습니다.
Try-With-Resource 자바 Resource 객체를 사용할 때 close를 호출 안 하면 메모리 누수가 발생하기 때문에 꼭 close를 호출해야 합니다. 대부분 Resource 객체를 try문 밖에 선언한 다음에 finally문에서 close를 호출하는데 이렇게 하면 코드가 길어지기 때문에 효율적이지 않습니다. 이럴 때 try-with-resource를 사용하면 쉽게 해결할 수 있습니다. 위의 예제 코드는 csv 파일을 읽는 것인데 파일 읽는 Resource 객체들을 try-with-resource를 사용하면 코드를 간단하게 작성할 수 있습니다. 그러나 Resource 객체가 AutoCloseable를 지원하지 않는다면 try-with-resource를 사용해도 close가 호출되지 않습니다. Resource 객체가 AutoC..
Arrays Collections sort 자바 Arrays와 Collections에 sort라는 api가 있습니다. Arrays의 sort는 배열을 정렬하고 Collections의 sort는 Collection을 정렬합니다. (Collection - List, Map, Set) 먼저 Arrays의 sort 예시부터 보겠습니다. 위 화면의 빨간색 상자로 표시한 부분이 String 배열을 오름차순으로 정렬하고 있습니다. 11번째 라인 "return o1.compareTo(o2);"은 o1과 o2을 비교해서 오름차순으로 정렬한다는 뜻입니다. 반대로 내림차순으로 정렬하려면 "return o2.compareTo(o1);"으로 수정하면 됩니다. 위의 compare 메소드 리턴값에 대해 아래와 같이 정리할 수 있습니다. --------------------..
List remove ConcurrentModificationException foreach로 리스트 순회하다가 중간에 삭제해야 하는 경우 아래와 같이 코드 작성하면 예외가 발생합니다. 위의 예제 코드는 리스트의 원소가 3인 경우 삭제하다가 ConcurrentModificationException 예외가 발생했습니다. ConcurrentModificationException가 발생한 원인은 리스트에 추가나 삭제를 하면 modCount가 갱신되는데 위의 예제 같은 경우 modCount가 제대로 갱신되지 않기 때문입니다. 따라서 이런 문제를 해결하려면 foreach가 아닌 일반 for문을 사용하거나 iterator를 사용하거나 removeIf를 사용하는 방법이 있습니다.
Java NumberFormat DecimalFormat 클라이언트로부터 받은 데이터가 숫자인 경우 특히 금액 관련 데이터라면 3자리 단위로 변환해야 할 때가 있습니다. 반대인 경우도 있고요. 그럴 때 NumberFormat과 DecimalFormat을 사용하면 됩니다. NumberFormat : 3자리 단위인 데이터를 숫자로 변환(문자열 -> 숫자) DecimalFormat : 숫자를 3자리 단위로 변환(숫자 -> 문자열) 예제 코드를 보면 11~13라인은 NumberFormat을 사용해서 3자리 단위 문자열을 숫자로 변환하고 있습니다. 15~17라인은 DecimalFormat을 사용해서 숫자를 3자리 단위 문자열로 변환하고 있습니다. 예제 코드를 실행하면 위와 같이 정상적으로 표출되고 있습니다.
String split 특수문자 자바에서 문자열을 특정 문자 기준으로 나눌 때 split api를 사용하는데 특수문자를 기준으로 할 때 주의해야 할 점이 있습니다. 특수문자 앞에 "\\"를 붙이지 않으면 정규표현식 메타 문자로 인식해서 split이 제대로 되지 않습니다. 그래서 특수문자 기준으로 split를 쓰려면 아래와 같이 써야합니다. 위 예제는 "|" 기준으로 split을 하려고 하고 앞에 "\\"을 붙였습니다. 그리고 결과는 다음과 같습니다. 특수문자 기준으로 split을 할 때 꼭 "\\" 붙이는 거 잊지 않으면 좋겠습니다.
Java File Separator 자바 개발을 하다 보면 OS마다 파일 디렉토리(폴더) 구분자가 달라서 곤혹스러울 때가 있습니다. 예를 들면 윈도우는 "\\"이고, 리눅스는 "/"이어서 특정 파일을 읽거나 써야 하는 경우 디렉토리 구분자를 각각 따로 줘야 하는 불편함이 있습니다. 이럴 때 File.separator를 사용하면 쉽게 해결할 수 있습니다. 위 예제는 윈도우 C 드라이브 밑에 test 디렉토리 밑에 있는 test.txt 파일의 수정 날짜를 조회하는 소스입니다. 그리고 실제 해당 위치에 test.txt 파일이 있습니다. 코드를 실행하면 아래와 같이 정상적으로 파일 수정 날짜가 출력됩니다. 이처럼 File.separator를 사용하면 OS에 상관없이 파일 디렉토리 구분자를 쉽게 쓸 수 있습니다.