✅ 이 글은 Optional을 잘 알고 있는 사람에게는 어울리지 않는 글입니다. 헷갈림을 유발할 수 있습니다. 오늘 Java의 Optional에 대해서 알게 된 점을 쓴다. 제목에 부끄럽지만을 썼지만 뺐다. Java8부터 나온 Optional 이 몇 년이나 지났지만 알고 있다고 사용한 부분에서 전혀 다른 결과가 나와서 순간 뭐지? 했다가 아차 싶어서 쓰는 글이다. 예제로 살펴본다.Optional 이란?Java8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바..
문자열로 온 text 값을 LocalDateTime으로 parsing 해야 할 작업이 생겼다. 그런데 형식도 보통 yyyyMMddhhmmss 형식이 아니라 밀리세컨드까지 포함된 형식에 yyyy도 아닌 뒤에 yy만 들어오는 형태였다. Date: 120220 (20/2/2012) Time: 6150525 (6:15:05.250) 이렇게 들어온다.. 첫번째로 yyyy가 아닌 yy부터 날짜까지만 파싱이 되는지 확인해봤다. LocalDateTime yyMMddhhmmss = LocalDateTime.parse("220811165340", DateTimeFormatter.ofPattern("yyMMddHmmss")); System.out.println("yyMMddhhmmss = " + yyMMddhhmmss);..
필터링 Predicate로 필터링 스트림 인터페이스 중 filter 메서드는 Predicate(불리언을 반환하는 함수)를 인수로 받아서 Predicate와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) //채식 요리인지 확인하는 메서드 참조 .collect(toList()); 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다. List numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream() .filter(i -> i%2 ==0) .distinct() .forEach(System.ou..
스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 일단 스트림이 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 스트림을 병렬로 처리할 수 도 있는데 이건 내가 잘 이해를 못하고 일하는 환경에서의 필요성을 아직은 잘 못느껴서 나중에 정리 기존 코드와 자바8 스트림을 활용한 코드를 비교 // JAVA8 이전 public static List getLowCaloricDishesNamesInJava7(List dishes) { List lowCaloricDishes = new ArrayList(); //가비지 변수 즉, 컨테이너 역할만 하는 중간변수이다. 오직 정렬 연산을 위해 필요한 변수 for (Dish d : ..
오버로딩을 할 때 Method Signature가 중요하다. Method Signature가 같다는 것은 name 과 parameter types가 같다는 것을 말한다. 메서드 시그니처에는 return type(리턴 타입)은 포함되지 않는다. 시그니처가 같은 메서드는 동시에 한 클래스안에서 정의할 수 없다. 시그니처가 다른 메서드는 오버로딩이 가능하다. 이름이 다르거나 파라미터의 타입이나 개수가 다르거나.. public class MethodSignature { public static void main(String[] args) { } public String hello(int i) {return "";} public String hello(String s) {return "";} } hello 메서드..
pom.xml com.hierynomus smbj 0.10.0 Java @Value("${file.upload.server}") private String server; @Value("${file.upload.sharedFolder}") private String sharedFolder; @Value("${file.upload.user}") private String user; @Value("${file.upload.password}") private String pass; 업로드 public void smbFileUpload(){ .... SMBClient client = new SMBClient(); try (Connection connection = client.connect(address)) { ..
java의 컬렉션인 List에 관한 예제에서 기본값을 넣어줄 때 List integerList = List.of(1, 2, 3, 4, 5); List integerList2 = Arrays.asList(1, 2, 3, 4, 5); of() 정적 메서드는 자바 9부터 추가된 메서드이다. 어쨌든 List 값을 넣어주는 것은 동일한 것 같은데 무슨 차이일까 궁금해서 검색해봄. Arrays.asList returns a mutable list while the list returned by List.of is immutable: asList는 불변객체가 아니고 of는 불변객체로 만들어준다. 크게 뭔가 와닿는건 없는데 stackoverflow를 첨부 나중에 더 깨닫게되면 다시 씀. stackoverflow.com..
기본형 특화 스트림인 IntStream과 LongStream에는 정적 메서드인 range와 rangeClosed가 있다. 특정 범위의 숫자를 차례대로 생성해주는 기능을 가진다. 두 메서드 모두 시작 값과 종료 값을 인수로 받는다. public static IntStream range(int startInclusive, int endExclusive) { ... } public static IntStream rangeClosed(int startInclusive, int endInclusive) { ... } 단 하나의 차이점이라면 함수의 인자값에도 힌트가 있듯이 range 메서드는 종료 값을 포함하지 않지만 (endExclusive) rangeClosed 메서드는 종료값을 포함해서 반환한다. (endIn..
- Total
- Today
- Yesterday
- Bash tab
- mybatis
- Mac
- LocalDate
- mybatis config
- window
- Java
- docker
- oracle
- 북리뷰
- Spring Security
- Github Status
- JavaScript
- LocalDateTime
- Spring
- localtime
- jQuery
- config-location
- svn
- maven
- intellij
- Linux
- input
- Kotlin
- 오라클
- rocky
- springboot
- 베리 심플
- 프로페셔널 스튜던트
- elasticsearch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |