일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Set
- 라우터
- container
- Linux
- ansible
- IntelliJ
- post
- 소켓
- Jenkins
- jdk
- AOP
- map
- DevOps
- docker
- 액세스회선
- Java
- gradle
- LAN어댑터
- sonarQube
- JPA
- Collection
- 허브
- 캐시서버
- 방화벽
- tomcat
- STREAM
- mybatis
- Pipeline
- cloud
- Spring
- Today
- Total
목록전체 글 (195)
거북이-https://velog.io/@violet_evgadn 이전완료
코딩 테스트 시 필요한 이유 처음에는 진법으로 변환하는 메서드가 너무 간단하기도 하고 나누기를 통해 N진법 수로 변환하는 함수를 만들면 된다고 생각해 정리할 필요 없다고 생각하였다. 그런데 생각보다 코딩 문제에 "N진법으로 바꾸는 문제"가 많았다. 이때마다 N진법을 만드는 방법을 검색하는 것도 귀찮았고 한 번 정리해놔야 다음에는 검색하지 않고서도 사용할 수 있기에 한 번 정리하도록 하겠다. int형 데이터 N진법으로 표현 Integer.toString(int i, int radix) // 숫자 i를 radix진법으로 변환 int형 데이터를 N진법으로 변환하는 방법은 이미 Java 내에 구현되어 있다. 물론 Integer.toBinaryString(), Integer.toHexString() 같은 특정 진..
코딩 테스트 시 필요한 이유 Java로 코딩 테스트를 준비하다 보면 분명 로직이 정확한 것 같은데 답이 틀리는 경우가 있다. 심지어 반 이상은 맞는 상황이 다수인지라 더욱 미쳐버릴 것 같다. 이런 경우 10번 중 7-8번은 Int와 Long의 범위 차이 때문에 생기는 에러였다. 코딩 테스트에서 int형 데이터로 Input이 들어오고 Output 또한 int형 데이터라면 대부분 형 변환을 수행하지 않고 코딩한다. 하지만 (int 데이터) * (int 데이터)의 결과가 int 범위를 넘어가는 경우가 존재한다. 이 경우 Overflow 문제가 발생하는데 Java는 이 상황에서 에러를 발생시키는 것이 아닌 이상한 중간 결과를 반환한다. 당연히 중간 연산 결과가 틀리니 답 또한 제대로 반환되지 않는 것이다. 이유..
코딩 테스트 시 필요한 이유 모든 코딩 테스트를 보면 왜인지는 모르겠지만 답을 배열(int[], String[] 등)로 반환하라고 하는 경우가 많다. 하지만 개인적으로는 선언 시 미리 Size를 정해줘야 하는 배열보다는 Size 걱정 없이 데이터를 저장할 수 있는 Collection을 더 많이 활용하게 된다. 물론 Collection을 for문이나 for each문을 통해 모든 데이터를 순회하며 배열에 값을 넣어줘도 될 것이다. (실제로 필자는 예전에 이런 방식으로 배열을 만들었다) 하지만 Stream을 사용한다면 데이터 순회에 걸리는 실행 시간을 조금이라도 줄일 수 있지 않을까 생각하여 정리해 보았다. Collection to Array ◎ int가 아닌 Data Type → int String s :..
최종 처리 메서드 종류 수집 최종 처리 메서드의 꽃이라고 할 수 있다. 지금까지 Stream으로 처리한 데이터들은 최종 처리 메서드를 통해 결과 출력만 수행하였다. 하지만 현실에서 코드를 사용할 때는 출력문으로 결과를 출력하는 상황보다는 데이터들을 Collection이나 Array에 담아 사용자에게 반환하는 경우가 대부분이다. 따라서 Stream에서도 중간 메서드들을 통해 처리된 데이터들을 Collection이나 배열, 혹은 원하는 Container로 담아주는 메서드가 필요하고 이것이 "수집 최종 처리 메서드"이다. 대표적인 수집 메서드는 "collect()"이며 collect에 전달하는 Parameter를 다르게 하여 어떤 Container에 Stream 데이터를 수집할지 결정할 수 있다. Collec..
최종 처리 메서드 종류 루핑 ◎ forEach 중간 처리 메서드 Section에서 peek()을 설명하며 비교군으로 많이 활용했던 구문이다. forEach()의 리턴 타입이 void인 만큼 forEach는 Stream의 데이터를 변경하는 등의 특수한 역할을 수행할 수는 없다. forEach() 구문은 주로 Stream에 저장된 모든 요소를 출력하는 용도로 활용된다. peek()을 배우며 많이 활용해봤으니 예시 코드는 생략하겠다. 매칭 매칭은 최종 처리 단계에서 Stream에 담긴 값들이 특정 조건을 만족하는지 조사하는 메서드이다. 중간 단계 메서드 중 filter()와 비슷하다고 생각할 수 있지만 조금 다른 성격을 띤다. filter()는 중간 단계에서 로직을 수행하며 "모든 데이터 중 원하는 데이터만 ..
중간 처리 메서드 종류 왜인지는 모르겠는데 티스토리에서 표를 작성하면 깨지는 경우가 있어서 Excel로 표를 만들어 스크린샷을 찍었다. (생각보다 티스토리가 순정으로 활용하기엔 안 좋은 것 같은...) 필터링 필터링은 "Filter"라는 말에서 알 수 있듯 Stream에 저장된 수많은 데이터 중 원하는 데이터만 걸러내는 역할을 수행한다. ◎ distinct() 중복을 제거하는 메서드이다. Stream은 Object.equals(Object B)가 true를 반환할 때 Object와 Object B를 동일한 객체로 판단하는데 Set에서 짧게 설명했듯 자바에서는 equals() 메서드를 수행하기 전 두 Object의 Hashcode 값 일치 여부를 먼저 검사하기 때문에 hashCode() 값 또한 일치해야 ..
Stream 종류 Stream Interface는 BaseStream이라는 Interface를 상속받아 Stream 역할을 수행한다. BaseStream Interface를 상속받는 Interface는 Stream 뿐만 아니라 IntStream, LongStream, DoubleStream이 존재한다. IntStream은 int 데이터만 들어갈 수 있으며, LongStream은 long 데이터, DoubleStream에는 double 데이터만 들어갈 수 있다. 객체 Stream를 선언할 때 T에는 오직 Class 자료형만 들어갈 수 있으므로 T에 int, long, double이 들어갈 수가 없다. 따라서 T에 int, long, double이 들어가야 하는 상황을 대처하기 위하여 IntStream, L..
Java 8에 추가된 내용 & Java Stream이 강조되는 이유 Java LTS 버전 중 하나인 Java8에 추가된 대표적인 내용은 아래와 같다. Lambda(람다) : 마치 함수처럼 코드를 작성하는 함수형 프로그래밍 언어에서 사용되는 개념으로 메서드에 이름이 없어 익명 함수라고도 부름 Optional : Null이 될 수 있는 객체를 담는 클래스 메소드 레퍼런스 : Lambda의 축약 표현. 아래와 같이 사용 가능 클래스 이름::메소드 이름 (예시) list.forEach(System.out::println) 생성자::new (예시) list.stream().map(Integer::new) Stream : Collection이나 배열에 저장된 요소를 람다식(Lambda Expression)이나 메소..
※ 이전에 설명했던 Collection 공통 함수 이외 Class에만 존재하는 특별한 함수들만 기입했다 List ◎ List Interface란? List는 "중복을 허용하며 순서가 존재하는 Collection"을 의미한다. List는 순서가 존재하는 Collection이기 때문에 Collection 중에는 유일하게 Index가 존재하며, 객체에 접근할 때 Index로 접근할 수도 있다. List는 Collection에 객체 그 자체를 저장하는 것이 아닌 객체 주솟값을 저장한다. 따라서 동일한 객체가 다른 Index에 들어가 있다 하더라도 Collection에는 같은 주솟값이 저장되어 있으므로 1개 Index의 데이터에 변형을 가할 경우 다른 Index의 데이터에도 영향을 끼칠 수 있다. 예시를 통해 알..
Collection이란? "자료구조"라는 말을 많이 들어 봤을 것이다. Wikipedia 기준 자료구조란 아래와 같은 의미를 가진다. 컴퓨터 과학에서 (데이터에) 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 이를 해석하면 "자료구조"란 자료 그 자체, 다른 자료와의 관계, 그리고 자료를 처리할 수 있는 명령들을 모두 포함하고 있는 개념인 것이다. Collection도 자료 구조의 일종인데, "여러 원소들을 담을 수 있는 자료구조"를 의미한다. 더욱 정확히 말하자면 다수의 데이터를 저장 및 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 Fra..