일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이펙티브 자바
- 위상정렬
- 헥사고날 아키텍처
- 자바
- dfs
- spring security
- disjoint set
- dataframe
- docker
- 스프링
- 문자열
- equals
- pandas
- 백준
- 데이터 flow
- Redis
- 세그먼트 트리
- UML
- springboot
- 알고리즘
- JPA
- 비트마스크
- 다익스트라
- 파이썬
- ddd
- 포트앤어댑터 아키텍처
- series
- java
- BFS
- DP
- Today
- Total
목록자바 (9)
코딩못하는사람

HashMap은 key의 중복을 허용하지 않고 key-value를 1:1로 매핑하는 자료구조이다. hash의 제공해주는중 장점으로는 빠른 탐색,삽입,삭제에도 있지만 해시 충돌이라는 문제를 꼭 생각해봐야 한다. 해쉬 충돌 동일하지 않은 어떤 객체 X와 Y가 있을 때, 즉 X.equals(Y)가 '거짓'일 때 X.hashCode() != Y.hashCode()가 같지 않다면, 이때 사용하는 해시 함수는 완전한 해시 함수(perfect hash functions)라고 한다. Integer, Long, Double 같은 Number 객체는 객체가 나타내려는 값 자체를 해시 값으로 사용할 수 있기 때문에 완전한 해시 함수 대상으로 삼을 수 있다. 하지만 String이나 POJO(plain old java obje..
아이템43] 람다보다는 메서드 참조를 사용하라 람다의 장점은 익명클래스보다 코드가 간결해진다는 장점을 가진다. 하지만 여기서 메서드 참조(Method reference)를 활용하면 한단계 더 간결해진 코드를 만들 수 있다. 코드로 예시를 보자. Map에 키가 없다면 키와 숫자 1을 매핑하고, 키가 존재하면 기존 매핑값을 증가시키는 코드이다. map.merge(key, 1, (count, incr) -> count + incr); //Map에서 제공하는 merge 메서드 merge 메서드는 키,값,함수를 인자로 받는다. 깔끔해 보이지만 매개변수 count와 incr이 하는일 없이 코드를 차지한다. 자바 8에서는 Integer 클래스 및 기본타입 래퍼클래스은 이 람다와 기능이 같은 정적 메서드 sum 을 제..
아이템 42]익명클래스보다는 람다를 사용하라 자바 8에 와서 추상 메서드 하나짜리 인터페이스는 의미를 인정받아 간결하게 코드를 작성할 수 있게 해주는 방식이 도입되었다. 함수형 인터페이스라 부르는 인터페이스들의 인스턴스를 람다식(lambda expression,혹은 람다)을 사용해 만들 수 있게 된 것이다. 람다는 익명 클래스와 개념은 비슷하지만 코드는 훨씬 간결하고 자질구레한 코드들이 사라지고 어떤 동작을 하는지 명확하게 보인다는 장점을 가진다. 익명 클래스를 사용할 때와 람다를 사용했을 때의 코드를 비교해보자. 문자열을 길이순으로 정렬하는 코드이다. 1.익명 클래스의 인스턴스를 함수객체로 사용하는 방식 Collection.sort(words, new Comparator() { public int co..

1.어댑터 패턴 어댑터 패턴의 이해는 콘센트로 이해할 수 있다. 우리나라에서는 220V의 콘센트를 쓰지만 필요에 따라서 110V,22V,11V에 맞춰서 다양하게 연결되어야 할 때가 있다.이럴 때 우리는 중간에 220V와 110V가 연결될 수 있도록 호환을 도와주는 인터페이스를 만들어 주어야 한다. 설계도는 다음과 같다. 클라이언트에서는 Target Interface 를 호출하는 것 처럼 보인다. 하지만 클라이언트의 요청을 전달받은 (Target Interface 를 구현한) Adapter 는 자신이 감싸고 있는 Adaptee 에게 실질적인 처리를 위임한다. Adapter 가 Adaptee 를 감싸고 있는 것 때문에 Wrapper 패턴이라고도 불린다. 예제를 만들어 보았다. 내가 220V 폰 충전기를 가지..

스프링 빈(Spring Bean)이란? 스프링 IoC(Inversion of Control) 컨테이너에 의해서 관리되고 애플리케이션의 핵심을 이루는 객체들을 스프링 빈(Beans)이라고 한다. 빈은 스프링 컨테이너에 의해서 인스턴스화 되어 조립되고 관리됩니다. 스프링 컨테이너가 관리해준다는 점을 제외하면 자바 객체이다. Singleton 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. 코드에서 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. 하지만 스프링 컨테이너를 사용하면 컨테이너에 등록되는 빈들을 알아서 싱글톤으로 관리해준다. (클라이언트들이 스프링 빈을 요구할 때..

자바의 객체의 타입에는 Immutable 타입과 mutable타입이 있다. 객체들은 기본적으로 heap영역에 할당되고 stack영역에 래퍼런스 값을 갖는 참조 변수들로 접근 가능하다. immutable(불변) 객체 이름에서 알 수 있듯이 변경 불가능,바뀌지 않는 객체이다. immutable 객체의 종류에는 대표적으로 String, Boolean, Integer, Float, Long 등이 있다. (객체이므로 String을 제외하면 primitive의 래퍼타입이다). 이제 immutable 객체의 불변이라는 개념을 자세히 보자. new 연산자로 객체를 생성하면 heap영역에 객체가 생기고 래퍼런스 값을 가지는 변수가 stack에 생길 것이다. 불변 객체라는 것은 이 객체의 값을 heap 영역에서 바꿀 수 ..

자바에서의 배열 정렬은 크게 3가지로 나눈다. 오름차순or 내림차순// 기본타입 or String타입이냐 //객체 배열이냐 1. 오름차순으로 배열하기. 1-1 기본타입 배열 오름차순으로 배열에는 java.util패키지의 Arrays클래스를 사용하면 된다. int [] a=new int []{4,3,2,1}로 선언했다고 하면. Arrays.sort(a)를 해주면 a배열 자체를 정렬된 배열로 바꿔준다. >>[1,2,3,4] 2-1 String타입 배열 String타입은 기본타입은 아니지만 오름차순에서는 같은 방법으로 쓰인다. 아스키코드의 순서에 따라 배열 해준다. String [] s=new String []{"bb","cc","aa"} 위와 같이 Arrays.sort(s)를 해주면 [aa, bb, cc]으..
StringBuilder란. API를 살펴보면 첫줄에 A mutable sequence of characters 라고 써있다. String은 immutable 한 객체로 값을 수정하면 새로운 객체를 만들어 내서 메모리를 잡아먹고 시간도 잡아먹게된다. 하지만 StringBuilder를 사용하게 되면 mutable한 sequence를 수정하는 것이므로 같은 주소에 값만 수정되는 개념이 되게되서 훨씬 빠르게 작동하게 되는 것이다. (메모장에 써 넣어 놓는다고 생각이 든다) 예를 들어 for문 10000번을 돌면서 10000줄의 문자열을 출력해야한다고 하면 System.out.println("정답")은 만번의 String을 선언하고 메모리를 잡아먹게 되지만 매번 StringBuilder에 sb.append("정..
www.acmicpc.net/problem/4344 코드 배운점 printf,println의 차이 printf printf는 c에서 쓰던 것과 방식이 같다. System.out.printf ("출력서식",출력할 내용) ==> %d(정수) %f(실수) %c(문자) %s(문자열)들을 사용해서 표기 할 수 있다. 당연히 %.2f와 같은 방식으로 소수 몇번 째 자리까지 출력할지 정할 수 있다. println System.out.println("정답은"+result)와 같이 문자열은 ""로 감싸주고 변수들을 섞어서 원하는 출력을 만들어 준다. 여기서 +는 한쪽이라도 문자열일 때는 문자열을 이어 붙이고 숫자끼리라면 덧셈을 해준다. ex) System.out.println("3+5" +5); >>3+55 ex)Sys..