Null 처리, 객체 구성, 컬렉션 다루기: Kotlin에서 더 자연스러운 표현들
·
Language/Kotlin
Java를 오래 사용하다 보니, Kotlin 문법을 알고 있어도 자연스럽게 Java 스타일로 코드를 작성하곤 했습니다.문법적으로 문제는 없었지만 Kotlin의 장점을 충분히 살리지 못하고 있다는 아쉬움이 늘 있어,Kotlin다운 코드 작성법을 소개해 도움이 되었으면 하는 마음으로 정리했습니다. 1. Null 체크if (A != null) vs A?.let { }Java 스타일if (user != null) { user.doSomething() } else { return null }Kotlin 스타일user?.let { it.doSomething() }더 좋은 Kotlin 스타일user?.doSomething()let은 “스코프 함수”이지 null-check 용이 아님단순 null-safe call 이면..
자바 우선순위큐(PriorityQueue)
·
Language/Java
//오름차순(우선순위가 낮은 숫자 순) PriorityQueue pq = new PriorityQueue(); //내림차순(우선순위가 높은 숫자 순) PriorityQueue pqHightest = new PriorityQueue(Collections.reverseOrder()); pq.add(1); pq.offer(2); pq.add(3); pq.poll(); // 첫번째 값을 반환하고 제거 비어있다면 null System.out.println(pq); // [2, 3] pqHightest.add(1); pqHightest.add(2); pqHightest.add(3); pqHightest.peek(); // 첫번째 값 참조 3 pqHightest.remove(); // 첫번째 값 제거 System.o..
자바 스트림(Stream), 람다(Lambda)
·
Language/Java
Stream 생성 배열 Arrays 클래스의 static 메소드인 stream()에 배열 인스턴스를 전달 int[] i = {1,2,3,4,5}; IntStream istm = Arrays.stream(i); 컬렉션 컬렉션 인스턴스를 대상으로 디폴트 메소드 stream()을 호출 List s = Arrays.asList("a", "b", "c"); Stream stm = s.stream(); 데이터 직접 전달 Stream클래스 혹은 IntStream 등의 기본 자료형 스트림의 static 메소드인 of()에 stream에 넣고 싶은 데이터들을 전달 Stream istm = Stream.of(1,2,3); IntStream istm = IntStream.of(1,2,3); 중간 연산 filter(Predi..
자바 순열, 조합 구하기 (파이썬 itertools 라이브러리)
·
Language/Java
자바는 파이썬의 itertools 라이브러리 같은 내장함수로 순열, 조합이 없어 직접 구현해야함 n개중에 r개 선택한다는 가정 Depth를 r만큼 재귀 변수 int n, r : n개 중 r개를 뽑음 int[] now : 현재 저장한 list값 인덱스 List result : 결과값 boolean[] visited : 순열 방문 여부 순열 public static void permutation(List list, int depth) { if (depth == r) { List temp = new ArrayList(); for (int i = 0; i < now.length; i++) { temp.add(list.get(now[i])); } result.add(temp); return; } for (int ..
ProcessBuilder Java 쉘 명령어, 스크립트 실행
·
Language/Java
쉘 스크립트 실행 1. ProcessBuilder 객체 생성 ProcessBuilder builder = new ProcessBuilder(); ProcessBuilder객체를 사용하여 Linux 또는 Window의 커맨드라인의 커맨드입력을 실행할 수 있다. 2. directory(new File(“파일경로”)) : 해당 커맨드를 실행할 경로 String homeDirectory = System.getProperty("user.home"); builder.directory(new File(homeDirectory)); 3. command(“커맨드”) : 커맨드 입력메서드 builder.command("sh", "-c", "ls -l | grep P"); 4. ProcuessBuilder.start() :..
[Mac OS / Java] 맥 JDK 자바 버전 변경
·
Language/Java
현재 jdk 버전 확인 java -version 설치된 모든 jdk 버전들 확인 /usr/libexec/java_home -V 사용하는 shell 확인 echo $SHELL bash 혹은 zsh vi 를 통해 환경변수 수정 vi ~/.bash_profile #bash vi ~/.zshrc # zsh 사용하는 shell에 따라 파일 열기 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0) export JAVA_HOME=$(/usr/libexec/java_home -v 11) export JAVA_HOME=$(/usr/libexec/java_home -v 17) 변경하려는 버전 입력 i 키를 입력해 수정 :wq! 를 입력해 저장 후 편집기 닫기 source ~/.zs..