전체 글

전체 글

    [모던 자바 인 액션 스터디] 3장 람다 표현식

    3주간 스터디를 진행하게 됐다. 안그래도 이전에 쭉 정리했던 자바 인 액션 책을 다시 읽어보려던 참이었는데 타이밍 맞게 스터디가 있어 참여하게 됐다. 나름 간단하게 정리하려고 노력했다. 람다 표현식 정리 람다 표현식은 익명 함수를 단순화한 것 Comparator byWeight = new Comparator () { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } }; => Comparator byWeight = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); 다음과 같이 익명 함수를 단순화 시킨다. 어디에서 람다를 사용..

    [Java] 강한참조와 약한참조 그리고 WeakHashMap 에 대해

    강한참조와 약한참조 그리고 WeakHashMap 에 대해 강한 참조 new 할당 후 새로운 객체를 만들어 해당객체를 참조하는 방식이다. 참조가 해제되지 않는 이상 GC의 대상이 되지 않는다. 약한 참조 Integer prime = 1; WeakReference weak = new WeakReference(prime); 다음과 같이 WeakReference Class를 이용하여 생성이 가능하다. prime == null이 되면(해당 객체를 가리키는 참조가 WeakReference 뿐일 경우) GC 대상이 된다. Fruit apple; Fruit orange; Fruit strong; WeakReference weak; public void Test() { apple = new Fruit("apple"); ..

    [Java] subList()와 subSet() 에 대해

    subList()와 subSet() 에 대해 List beforeList = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); List afterList = beforeList.subList(0, 2); afterList.forEach(System.out::println); /*출력 1 2 subList()는 List를 잘라주는 메서드이다. 인수로 int fromIndex, int toIndex를 갖는다. 내부구현은 다음과 같이 이루어져 있다. (ArrayList 기준) public List subList(int fromIndex, int toIndex) { subListRangeCheck(fromIndex, toIndex, size); return new SubList(t..

    [Java] LinkedHashMap의 원리에 대해

    LinkedHashMap의 원리에 대해 HashMap을 순차적으로 읽으면 어떤 순서로 읽는가 ? 이 글은 이곳 의 글을 그대로 가져온 글입니다. HashMap은 Node를 꺼낼 때 넣은 순서를 보장하지 않는다고 합니다. 그렇다면 Node 순회에 대해서 읽는 순서는 어떻게 될까요 Map interface에서 아래와 같은 문구를 발견하였습니다. The {@code Map} interface provides three collection views, which allow a map's contents to be viewed as a set of keys, collection of values, or set of key-value mappings. The order of a map is defined a..

    [Java] HashMap의 원리에 대해

    HashMap의 원리에 대해 이 글은 이곳에서 제가 정리한 것보다 더 정리가 너무 잘 되어있어서 가져왔습니다. HashMap은 Key, Value를 저장하는 Map의 구현체 중 하나입니다. 자료구조에 Key를 넣으면 Value를 반환하도록 합니다. 그리고 HashMap은 Key를 Hashing을 하여 저장하여 빠르게 처리 그리하여 HashMap이란 입력과 삭제에 대해 시간복잡도가 O(1)인 자료구조라고 합니다. initialize 우리가 Java를 사용할때 HashMap을 사용한다고 한다면 가장먼저 초기화를 해야합니다. (Key, Value는 모두 String이라고 하겠습니다.) 그러면 아래와같이 초기화 할 것입니다. Map map = new HashMap();이때 내부에서는 어떤일이 일어나는지 보겠습니..

    [Java] CheckedException과 UncheckedException 에 대해

    Checked Exception과 Unchecked Exception 에 대해 Error는 시스템이 비정상적인 상황이 생겼을 때 발생한다. 시스템 레벨에서 발생하기 때문에 심각한 수준의 오류이다. 개발자가 미리 예측할 수 없기 때문에 애플리케이션에 오류에 대한 처리를 하지 않아도 된다. Exception은 구현한 로직에서 발생한다. 예외는 발생할 상황을 미리 예측하고 처리할 수 있다. Checked Exception Unchecked Exception 처리 여부 반드시 예외를 처리해야 함 명시적인 처리를 강제하지 않음 확인 시점 컴파일 단계 실행 단계 예외 발생 시 트랜잭션 처리 roll-back 하지 않음 roll-back 함 대표 예외 Exception을 상속받는 하위 클래스 중 RuntimeExce..

    자동차 경주 1차 피드백 정리

    자동차 경주 1차 피드백 정리 개행문자 대신 line.seperator() 를 사용하자. OS마다 개행문자가 다르기 때문이다. private boolean isvalid(String name) { name.equals(""); } //위의 코드 보다는 private boolean isValid(String name) { "".equals(name); } //위 코드를 사용해서 NPE를 최소화하자 View로 뽑아낼 것을 toString() 메서드에 정의하게 되면, View에 관한 노출 정책 변경이 일어날 때 마다 도메인의 toString()을 수정해야한다. 따라서 View는 View에서 그려주고 toString()은 객체의 정보를 잘 나타낼 수 있도록 바꾸는 것을 지향한다. Pattern을 매번 생성하는 ..

    [Java] JUnit 가지고 놀아보기

    JUnit 가지고 놀아보기 String[] strings = "1,2".split(","); assertThat(strings).contains("1"); //true assertThat(strings).containsExactly("1"); //false assertThat("Cowboy Bebop").contains("Cowboy"); assertThat("The Legend Of Zelda") .startsWith("The") .contains("he L") .endsWith("Zelda"); 위와 같이 contains를 다양하게 이용할 수 있다. 위의 코드 외에도 다양한 contains 관련 메서드가 있다. assertThat(100).as("100 equals Test").isEqualTo(10..