본문 바로가기
728x90

Java11

[다시 공부하는 Java] Stream API 개요 '아는 만큼 보인다' 라는 말을 Java와 Spring을 다시 공부하면서 매우 공감했다. 처음 습득하는 지식은 이해도 쉽지 않고 기억에 남기 어렵다. 하지만 여러번 반복해서 접하다보면 '이게 그때 그 말이었구나' 하고 깨닫게 된다. 그래서 내가 놓치고 있고 부족한 부분을 채우기 위해 다시 Java와 Spring을 공부하기 시작했다. 오늘 주인공은 Stream이다. Java 8부터 람다식, 함수형 인터페이스 등을 지원하면서 데이터를 처리하는데 자주 사용되는 함수들을 추상화한 Stream부터 복습해보자. Stream 개념 Stream이란, Collection의 담겨진 요소들을 하나씩 람다식을 수행하는 일회성 반복자이다. 소개한 그대로 Stream의 내부 메서드를 통해 반복적인 일처리가 가능하며 일회성이.. 2023. 4. 18.
java.util.Optional<T> 이란? Java 8에서 추가된 Optional 클래스는 객체(T)를 감싸주는 Wrapper class이다. 사용 목적 객체(T)가 null이더라도 NullPointerException를 발생시키지 않고 값이 없을 때의 경우를 예외처리 할 수 있다. Optional 기본 예제 Optional optional = Optional.ofNullable("예외처리"); if(optional.isPresent()){ System.out.println(optional.get()); } Optional 활용 예제 Optional optional = Optional.ofNullable(getId()); String id = optional.orElse("Default"); System.out.println(id); // get.. 2021. 12. 22.
2021 그렙 챌린지 JAVA 1번 회고 시작 2021 그렙 챌린지 1번 문제를 풀어보았다. 유효한 유저 정보를 가지고 입력을 순서대로 했을때 입력이 유효했던 경우를 찾아 내는 것으로 필자는 로그인 여부와 상품을 담은 여부를 변수로 생성하고 조건에 따라 유효성을 판별하였다. 기본 구현 문제였고 배열을 다루는 문제였던 것 같다. 나의 풀이 package test; public class grepp1 { public static void main(String[] args) { String[] infos = {"kim password", "lee abc"}; String[] actions = {"ADD 30", "LOGIN kim abc", "LOGIN lee password", "LOGIN kim password", "LOGIN kim passwo.. 2021. 8. 26.
2021 와디즈 코딩챌린지 2번 : we make CODE #better 시작 마찬가지로 알고리즘 문제인 와디즈 코딩챌린지 2번이다. 새로운 문법을 만드는 문제로 블록 개념을 생각하며 문제를 푼다면 해결할 수 있을 것이다. 나의 풀이 JAVA로 작성한 코드 package test; import java.util.ArrayList; public class wadiz2 { public static void main(String[] args) { String[] code = {"a=3", "..a=4", "..b=3", "..print a", ".......a=6", ".......print a", ".......print b", "..print a", "....a=7", "....print a", "print a", "print b", "a=4", "print a", "...pr.. 2021. 8. 23.
2021 와디즈 코딩챌린지 1번 : we make CODE #better 시작 알고리즘 문제를 접하기 위해 와디즈 코딩챌린지를 신청하였다. 호수와 비밀번호를 입력하여 조건에 맞게 입력한 횟수를 구하는 문제로 많은 풀이법 중 주어진 배열을 그대로 활용하여 문제를 풀어보았다. 나의 풀이 JAVA로 작성한 코드 package test; import java.util.Arrays; import java.util.Collections; public class wadiz1 { public static void main(String[] args) { int[][] passwords = {{101,9999},{102,1111}}; String s = "101#9999#102#1111#101#9999#101#9999#"; System.out.println(solution(passwords, .. 2021. 8. 22.
JAVA 성능 향상 시키기 개발을 하면 고민을 많이 하게 된다. 과연 내가 작성한 코드는 효율성이 좋은가? 어떻게 하면 효율적인 코드를 작성할 수 있을까? 물론 알고리즘과 자료구조를 잘 선택하여 개발하면 된다. 하지만 그 밖에 또 무엇이 있는지 알아보고 있다면 어떻게 해야하는지 공부해보았다. 1. String 대신 StringBuilder와 StringBuffer도 생각해보자. 일반적으로 사용하는 쿼리문 작성 방법 String query = ""; query += "select * "; query += "from ( "; query += "select column1, "; query += "column2, "; ... 이를 다음과 같이 StringBuilder를 사용하면 응답 시간과 메모리 사용량을 줄일 수 있다. StringBu.. 2021. 8. 11.
[Java] StringTokenizer란? 새로운 String 관련 매서드를 알아보자. StringTokenizer이란? StringTokenizer 클래스는 문자열을 사용자가 지정한 구분자(delim)로 쪼개주는 클래스. 그렇게 쪼개어진 문자열을 토큰(Token)이라 한다. StringTokenizer 생성자 public StringTokenizer(String str, String delim, boolean returnDelims); delim의 default값은 공백문자, delim 포함 여부를 returnDelims로 여부확인 StringTokenizer 매서드 StringTokenizer는 어떤 위치 토큰을 사용했는지 기억하고 있고 그 위치를 다음으로 옮김 int countTokens();// 남아있는 toekn 개수 반환 boolean.. 2021. 8. 2.
BFS 알고리즘이란? 너비 우선 탐색(BFS, Breadth-First Search) 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법이다. 이는 **그래프 탐색** (하나의 정점으로 시작하여 모든 정점을 한번씩 방문)에 속한다. BFS는 두 노드 사이의 **최단 경로** 및 **임의의 경로** 를 찾을때 사용하며 자료 구조 **큐(Queue)** 를 이용해 탐색을 한다. 유사 알고리즘 : Prim, Dijkstra 너비 우선 탐색(BFS) 예제 - Python 해당 예제는 같은 숫자끼리 땅따먹기로 인접한 같은 숫자끼리의 넓이를 구하는 예제이다. 바로 구현해보기 위한 예제이므로 코드가 지저분하다.. 구현 방식은 방문 여부, 큐(Queue)를 활용하였다. def solution(v): result = [0, 0, 0] .. 2021. 7. 8.
[Java] Queue란? Queue란? Queue는 줄을 지어 순서대로 처리되는 자료구조로 First In First Out의 형태를 가진다. 말 그대로 먼저 들어온 뎅터가 먼저 나가는 구조를 말한다. 사용 예제로는 그래프의 넓이 우선탐색인 BFS와 컴퓨터 버퍼(큐)에서 사용되며 맨 앞쪽의 데이터 삭제를 Dequeue, 맨 마지막의 데이터 추가를 Enqueue라 한다. Queue 사용법 - 생성 Queue를 JAVA에서 사용하기 위해서는 Queue와 LinkedList 모두 Import가 필요하다. import java.util.LinkedList; import java.util.Queue; Queue queue = new LinkedList(); Queue queue = new LinkedList(); Queue 사용법 - 값.. 2021. 7. 5.
728x90