본문 바로가기

PROGRAMMING/JAVA

(17)
[JAVA] AtomicInteger AtomicInteger? Concurrency support data structure Java 5부터 지원하는 Conccurrency int형 자료형으로 이전까진 synchronized 를 사용하여 구현 When to use? 한 번에 여러 스레드가 접근하여 기존값을 덮어씌우면 안 되는 경우 AtomicInteger는 원자성을 보장하는 int형 변수로 한 번에 하나의 쓰레드만 변수에 접근하고 변경할 수 있다. For example? Arrays.stream(s.split("")).forEach(item -> { if(item.equals(target)){ targetCnt.getAndIncrement(); } }); Java 스트림 연산의 경우 순차 실행이 아닌 병렬로 실행되는데, 이때 단순 int..
[JAVA] Builder 패턴 https://ko.wikipedia.org/wiki/%EB%B9%8C%EB%8D%94_%ED%8C%A8%ED%84%B4 빌더 패턴 - 위키백과, 우리 모두의 백과사전 빌더 패턴이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. 2 단어 요약 : 생성자 오버로딩 /** "Product" */ class Pizza { ko.wikipedia.org Builder 패턴이란? 빌더 패턴이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. 왜 사용하는가에 대한 답은 코드로 간단하게 설명된다. 적용 전 적용 후 단순 생성자를 활용해 객체를 생성하다보면 몇번째 파라미터..
[JAVA] Stream을 활용해 Array를 List로 변환하기 뭐 생각없이 짜면 그냥 for문 돌리면 되지만 요즘엔 JAVA8 Stream과 친해지려고 노력하는 중이다.
[JAVA] Scanner와 BufferedReader Scanner와 BufferedReader 차이 & 특징 1. 속도 속도는 압도적으로 BufferedReader가 빠르다. Scanner는 입력 즉시 바로 데이터를 입력한다면 BufferedReader는 말 그대로 버퍼링이 된 후 전달된다. 버퍼링을 하게 되면 미리 버퍼에 데이터를 올려놓기 때문에 효율성이 높아진다. 2. 사용편의 BufferedReader는 String만 지원되는 반면, Scanner는 정수형 소수형 문자 모두 지원한다. 그리고 Scanner는 정규식을 사용해 파싱 할 수 있다는 장점도 있다. 텍스트를 읽는 과정에서 정규 표현식을 사용해 기본적으로 공백을 기준점 삼아 입력 값을 토큰화 해 변환할 수 있다. Scanner의 사용 편의성이 장점이지만 이러한 과정을 거치게 되며 낮은 퍼포먼스..
[JAVA] Collection Set/Map/List 알고리즘 문제를 풀다 보면 해당 문제에 맞는 자료구조를 잘 선택해야 한다. 이에 대해 요점만 정리해서 포스팅해본다. 예를 들어 10개의 숫자가 주어지고 이 중에서 랜덤으로 3개를 뽑아 합을 만드는데 합이 될 수 있는 수 중에서 5번째 큰 수를 뽑아라 라는 문제가 있을 때 중복을 허용하지 않으며, 정렬이 필요함으로 TreeSet이 적절하다고 볼 수 있다. 또 다른 예로 anagram 문제가 있다. abc와 bca 두 단어가 주어졌을 때 정렬 순서는 다르지만 구성이 같은지 판단해야 할 경우 HashMap에 Key를 알파벳으로 Value를 개수로 지정하여 equal비교를 통해 anagram인지 판별할 수 있다.
[JAVA] Set, List -> Array로 변환 SET Set set = new HashSet(); Integer[] arr = set.toArray(new Integer[set.size()]); LIST List list = new ArrayList(); Integer[] arr = list.toArray(new Integer[list.size()]);
[JAVA] 배열 정렬하기 (내림차순, 오름차순) 오름차순(Default) Integer[] arr = {1, 3, 5, 2, 9, 7}; Arrays.sort(arr); Arrays.stream(arr).forEach(System.out::println); 내림차순 Integer[] arr = {1, 3, 5, 2, 9, 7}; Arrays.sort(arr, Collections.reverseOrder()); Arrays.stream(arr).forEach(System.out::println);
[JAVA] String Array 를 int Array로 변환하기 알고리즘을 풀다 보면 Scanner로 입력받은 String을 int array로 변환해야 하는 경우가 종종 있다. 1. For Loop String[] strArr = sc.nextLine().split(" "); int[] intArr = new int[strArr.length]; for(int i=0; i