반응형

ahnnyung ,/Java 7

[StringBuilder] StringBuilder.reverse() 이용해서 문자열 뒤집기

Javascript문법 공부중 this.message = this.message.split('').reverse().join('') 라는 얄미운 문법을 발견. 'Java엔 저런게 없을까' 라는 생각과 바로 시작 된 구글링. Java 또한 StringBuilder의 reverse() 메소드를 이용하여 뒤집는게 가능하다. 어떻게 보면 더 간결할지도. 그렇다면 뜯어봐야지 우선 타고타고 들어가보니 AbstractStringBuilder의 reverse() 메소드를 호출해준다. 우선AbstractStringBuilder의 value와 count는 현재 StringBuilder에 들어와있는 문자 배열과 그 길이를 의미한다. 다음이 reverse() 메소드이다. 우선 n을 count - 1 로 잡아주고 (아마도 va..

ahnnyung ,/Java 2021.11.29

[Java] 람다식(Lambda Expression)의 개념 및 사용방법

1) 람다식이란 Java 의 Lambda Expression(이하 람다식)은 Java 8에서 공식적으로 추가되었다. 다음은 w3school에서 설명되어있는 람다식이다. A lambda expression is a short block of code which takes in parameters and returns a value. Lambda expressions are similar to methods, but they do not need a name and they can be implemented right in the body of a method. 람다 표현식은 매개변수를 받아 값을 반환하는 짧은 코드 블록입니다. 람다 표현식은 메서드와 유사하지만 이름이 필요하지 않으며 메서드 본문에서 바로 ..

ahnnyung ,/Java 2021.07.29

[Java] Arrays.sort() & Collections.sort() 비교

// new Random().nextInt로 초기화된 Array로 가정 int[] intArray = new int[50000000]; for (int i = 0; i < intArray.length; i++) { intArray[i] = new Random().nextInt(Integer.MAX_VALUE); } // 비교를 위한 List 생성 List list = Arrays.stream(intArray).boxed().collect(Collectors.toList()); startTime = System.nanoTime(); Collections.sort(list); endTime = System.nanoTime(); System.out.println("#1 " + TimeUnit.MILLISECO..

ahnnyung ,/Java 2021.03.19

[Java] System.nanoTime()으로 자바 코드 실행에 걸린 시간을 측정

long startTime; // 시작시간. nanoSec long endTime; // 종료시간. nanoSec long estimatedTime; // 걸린시간. nanoSec double seconds; // 최종시간. Sec startTime = System.nanoTime(); // 시간을 체크할 자바 코드 삽입 // ... endTime = System.nanoTime(); estimatedTime = endTime - startTime; // 걸린시간 연산 seconds = estimatedTime / 1000000000.0; // nanoSec to Sec System.out.println("Response Time " + seconds);

ahnnyung ,/Java 2021.03.19

[Java] Java 8 Stream이란?

Stream이란? Java8부터 지원하는 Stream은 컬렉션, 배열등에 대해 저장되어있는 요소들을 하나씩 참조하며 반복적인 처리를 가능케하는 기능이다. 이러한 Stream을 이용한다면 불필요한 for문과 그 안에서 이루어지는 if문등의 분기처리를 쓰지않고도 깔끔하고 직관적인 코드로 변형할 수 있다. Stream 특징 Stream은 데이터를 변경하지 않는다. - Stream은 원본데이터로부터 데이터를 읽기만 할 뿐, 원본데이터 자체를 변경하지 않는다. Stream은 일회용이다. - Stream은 한 번 사용하면 닫혀서 재사용이 불가능하다. 필요하다면 정렬된 결과를 컬렉션이나 배열에 담아 반환할 수 있다. Stream은 작업을 내부 반복으로 처리한다. - Stream을 이용한 작업이 간결할 수 있는 비결중..

ahnnyung ,/Java 2021.01.19

[BufferedReader] BufferedReader.readLine()로 Json 데이터를 읽어올 때 주의할 점

팀원이 작성한 코드 중 문제가 있다는 팀장님의 말씀. 옆으로 쫄래쫄래 다가가 같이 코드를 보아도 여전히 문제를 모르겠다. 결과는 이렇다. Token을 발급해주는 서버로부터 받는 포맷은 다음과 같은 Json형태이다. 이 형태일때는 tokenbufferedReader.readLine()으로 한 줄을 받아, ObjectMapper를 이용하여 TokenVo를 만들어도 문제가 되지않는다. 하지만 Token을 발급해주는 서버가 너무나도 친절하여 굳이 다음과 같이 Json포매팅으로 변경해서 보내준다면?? tokenbufferedReader.readLine()으로 한 줄을 받는 순간 "{" 만 덜렁 받아지게되는 문제가 발생한다. 따라서 다음과 같은 (정답은 아니지만) 일종의 안전장치를 달아주는 게 좋다. StringB..

ahnnyung ,/Java 2020.11.20