java(81)
-
String vs StringBuffer/StringBuilder
String vs StringBuffer/StringBuilder 자바에서 문자열을 다룰 때 사용하는 대표적인 클래스로 String, StringBuffer, StringBuilder 가 있습니다. 문자열을 다루는데 서로 다른 3개의 클래스가 존재하는 이유가 무엇일까요? String 의 불변성 String 과 StringBuilder/Buffer 클래스의 가장 큰 차이점은 불변성에 있습니다. 불변성은 이름 그대로 변하지 않는 성질을 의미합니다. 그럼 String 클래스가 불변성을 띈다는 의미는 무엇일까요? String str = "java"; str = str + "chip"; >>> str >>> "javachip" String 클래스는 불변성을 띄기 때문에 변하지 않는다고 했습니다. 그런데 strin..
2022.08.24 -
정규표현식 (Regex) 정리
정규표현식은 아주 가끔 쓰기때문에 항상 다시 볼때마다 헷갈리곤 하는데.. 주요 사용예를 정리하여 보았다. 나중에 찾아보기 편하라고~ 정규 표현식의 용어들정규 표현식에서 사용되는 기호를 Meta문자라고 표현한다. 표현식에서 내부적으로 특정 의미를 가지는 문자를 말하며 간단하게 정리하면 아래의 표와 같다. 표현식 의미 ^x 문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다. x$ 문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다. .x 임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미한다. x+ 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미한다. x? 존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다. x* 반복여부를 표현하며 x 문자가 0번 ..
2022.08.24 -
[Java] LinkedHashMap은 무엇일까?
[Java] LinkedHashMap은 무엇일까? Language/Java 2020. 4. 8. 18:48 HashMap에 대해서 간략하게라도 알고 있다면 LinkedHashMap을 이름만 봐도 LinkedList + HashMap 합쳐진 것이라고 추측할 수 있다. HashMap은 순서가 존재하지 않는다. (즉 버전에 따라 환경에 따라 달라진다는 뜻이다) 그래서 내가 추측했던 것 처럼 실제로 LinkedHashMap은 HashMap에서 자료들이 입력된 순서를 기억하는 것을 추가하기 위해 만든 클래스이다. 사실 왜 HashMap이 데이터의 순서를 유지하지 않는지?에 대해서는 깊게 생각해본적이 없다. 이번에 짧게라도 생각해보면서 공부한 것을 정리해보려 한다. HashMap이 데이터의 순서를 유지하지 않는 이..
2022.08.24 -
자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점
자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점 자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점이 뭔가요?? 자바에서 getPath(), getAbsolutePath(), getCanonicalPath()의 차이점이 뭔가요?? 이걸 어쩔 때 쓰는거죠?? hashcode.co.kr 우선 getPath()는 File 객체를 생성할 때 넣어준 경로를 그대로 반환한다. 그리고 getAbsolutePath()와 getCanonicalPath는 getPath()와는 달리 프로그램을 실행시킨 위치 정보도 함께 반환해 준다. 소스코드 File file = new File("src", "test드"); Sy..
2022.08.24 -
LinkedList를 이용한 스택 구현
개요 LinkedList 를 사용하여 Stack 을 직접 구현해본다. 구현예제보기 Stack 아래 그림은 Stack 에 대한 설명이다. Stack 은 새로운 값을 어디에 넣을지 지정하지 않으며 push 하면 stack 의 구현 방식에 맞게 데이터가 들어가고, pop 하면 stack 의 구현 방식에 맞게 데이터가 나온다. 그림을 보면 알 수 있듯이 Stack 은 가장 마지막으로 들어간 데이터가 가장 먼저 나오는 LIFO (Liast In First Out) 방식이다. stack Linked list 로 표현하면 head 에 추가하고 head 를 반환한다고 생각하면 된다. 5 -> 4 -> 3 -> 2 -> 1 의 linked list stack 에서는 5 가 head 이고, 6을 push (추가) 할 경우..
2022.08.24 -
Java 8 Stream API PART 2.
다양한 기능들을 조합하여 좀 더 다양한 데이터 처리 쿼리를 만들기. 이전 문서에서 스트림을 사용하여 컬렉션 데이터 처리를 데이터베이스의 쿼리처럼 처리하는것을 살펴 보았다. 머 리를 식힐겸 스트림 API를 사용하여 거래금액이 비싼 내역들의 합을 구하는 코드인 Listing 1을 보자. 중간 작업(filter, map)을 통해 파이프라인을 세팅하고 종료 작업(reduce)을 통해 코드를 실행시키는 과정을 아래 Figure 1을 통해 볼 수 있다. Listing 1. int sumExpensive = transactions.stream() .filter(t -> t.getValue() > 1000) .map(Transaction::getValue) .reduce(0, Integer::sum); Figure 1..
2022.08.24