본문 바로가기

프로그래밍 언어/Java

(33)
Java) Comparable과 Comparator comparable과 comparator는 별도의 처리 없이 정렬이 가능한 primitive 타입 값들이 아닌 객체를 정렬할 때 사용한다. 구글에 객체 정렬하는 방법 같은걸 검색해서 사용 예제만 보고 사용했기 때문에 정확히는 '비교' 라는 의미가 담긴 이 객체가 왜 정렬할 때 사용되는지 잘 알지 못한 채 사용하고 있었다. 그러다 Stranger's LAB 에서 좋은 글을 발견해서 공부하면서 그 내용을 정리해본다. Comparable과 Comparator Comparable과 Comparator는 모두 인터페이스(interface)이다. 즉, 인터페이스에 선언된 메소드를 반드시 구현해야 한다. Comparable 인터페이스에는 compareTo(T o) 메소드를, Comparator 인터페이스에는 comp..
Java) java.util.regex.Matcher method 정리 java.util.regex.Matcher XML을 조작해서 문서 작성을 자동화하는 프로젝트를 하다보니 정규식을 사용할 일이 아주 많아졌다. 기본적으로 Matcher 클래스의 find, group, start, end 등의 메소드만 활용하고 있었는데 편리한 메소드들이 많은 것 같아 이번 기회에 공부해보고 넘어가려 한다. 기본 사용 방법 Pattenrn PATTERN_EX = Pattern.compile('정규식'); Matcher MATCHER_EX = PATTERN_EX.matcher('검사할 문자열'); while(MATCHER_EX.find()){ System.out.println("문자열에서 정규식 패턴과 일치한 부분: " + MATCHER_EX.group()); } System.out.print..
Java) 정규식과 StringBuffer를 이용하여 문자열 특정 위치만 치환하기 눈으로 확인하기에는 방대한 양의 XML에서 특정 범위를 다른 형식으로 만들어 치환하는 일이 필요했는데 그냥 replace를 하려니 특정 범위가 XML 내에서 중복되는 경우 마지막에 replace 되는 형태로 일괄 변경되었다. 처음에는 그냥 docx로 열리지 않아서 뭐가 문젠지 한참 살펴봤다. 문제는 유니크해야 하는 아이디가 중복되어 오류가 발생하는 것! array와 set에 각각 담아 확인해 보았더니 둘의 개수가 다른 것으로 보아 특정 범위가 중복되는 것들이 있었다!! 그래서 치환하기 전에 특정 범위에 사용되는 rsid를 모두 유니크 하게 만들어주기로 했다. 뽑아서 유니크하게 만들어 주어야 하는 부분의 형식이 정해져있기 때문에 정규식으로 뽑고, 뽑힌 결과의 정확한 위치를 알아내서 String buffer..
Java) 랜덤 아이디 만들기 - n자리수 16진수 문자열 만들기 docx 내 ooxml 코드를 직접 만져서 요소를 추가 및 제거하는 과정에서 ooxml에서 사용하는 아이디 형태가 8자리 16진수 문자열이길래 랜덤함수로 만들어 쓰기 ! 랜덤 n자리수 16진수 문자열 만드는 메소드 private String getRandom8BitHexString(n) { String hexString = ""; for (int i=0; i
Java) 자바로 shell script 실행하기 1. ShRunner class 만들기 package ...; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; public class ShRunner { public Map execCommand(String... str) { Map map = new HashMap(); ProcessBuilder pb = new ProcessBuilder(str); pb.redirectErrorStream(true); Process process = null; try { process = pb.start(); } catc..
Java) JSON body와 함께 HTTP POST 요청 보내기 1. json body 만들기 import org.json.simple.JSONObject; ... public JSONObject createRequestBody(){ JSONObject body = new JSONObject(); body.put("key", "value"); ... return body; } 2. api 콜하기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.P..
Java) URL로 파일 다운받아 로컬에 저장하기 자주 써먹을 것 같다. 코드는 이렇게 짜야되는거구나... [Java] URL 리소스 다운로드 URL 리소스 다운로드 Github 소스 URL 경로를 입력하면 다운로드 받는 스트림을 제공합니다. 대표적으로 이미지, 파일 같은 것을 다운로드 가능합니다. 코드 package sunghs.java.utils.file; import lombok.exter.. sunghs.tistory.com
JAVA/VSCode) compiler.err.doesnt.exist 빨간줄 오류 해결 실행은 똑바로 되는데 javax나 springboot 관련 모듈을 임포트하면 빨간줄이 생겨서 스트레스..... 어떻게 해결하나 했는데 구글링끝에 아주 간단한 문제였음을 알았다.. ㅠㅠ 자바 경로 설정부터 vscode setting 까지 다해봤는데 결론은 extension을 다시 설치했다. https://github.com/redhat-developer/vscode-java/issues/956 compiler.err.doesnt.exist vscode · Issue #956 · redhat-developer/vscode-java [provide a description of the issue] Unix MacOS Mojave version(10.14.5) JDK version:"1.8.0_60" Visua..