Java

    [JDBC] 단일 Select을 위한 방법들

    [JDBC] 단일 Select을 위한 방법들 Line id bigint auto_increment not null, name varchar(255) not null unique, color varchar(20) not null, primary key(id) 다음과 같은 Line 테이블이 있다. select * from line where name = ? 다음과 같은 쿼리문의 결과값을 받아오려는 메소드를 만든다고 한다. public Line findLineByName(String name) { String sql = "select * from line where name = ?"; return jdbcTemplate.queryForObject(sql, lineRowMapper(), "1호선"); } pri..

    [Java] 템플릿 메서드 패턴, 팩토리 메서드 패턴, 추상 팩토리 패턴

    템플릿 메서드 패턴, 팩토리 메서드 패턴, 추상 팩토리 패턴 템플릿 메서드 패턴 public abstract class WoowaTechCourse { public void dailyRoutine() { goWork(); haveClass(); study(); leaveWork(); } public void goWork() { System.out.println("출근"); } public void haveClass() { WoowaClass woowaClass = new WoowaClassSelector().brownClass(); woowaClass.classOwner(); } public void leaveWork() { System.out.println("퇴근"); } public abstract ..

    [Java] try-with-resources 에 대해

    try-with-resources 에 대해 try-with-resources 는 손쉽게 자원 할당을 해제할 수 있는 방법이다. 어떻게 사용하는지 바로 확인해보자. private static void printFile () throws IOException { try (FileInputStream input = new FileInputStream ( "file.txt")) { int 데이터 = input.read (); while (데이터! = -1) { System.out.print ((char) 데이터); 데이터 = input.read (); } } } 다음과 같이 사용한다. 기존의 try-catch-finally 였다면 finally 블록을 따로 만들어주고 그 부분에 close 메서드들을 호출했어야 ..

    [Java] Arrays.asList와 List.of의 차이점에 대해

    Arrays.asList와 List.of의 차이점에 대해 Arrays.asList와 List.of 둘 다 고정된 크기의 리스트를 제공하기 떄무에 새 요소를 추가하거나 삭제하려고 하면 UnsupportedOperationException이 발생한다. 그렇다면 둘의 차이점은 무엇일까 ?? List.of 는 set으로 값 변경이 불가능하다. List asList = Arrays.asList(1, 2, 3); List listOf = List.of(1, 2, 3); asList.set(0, 10); listOf.set(0, 10); //UnsupportedOperationException List.of는 set으로 값 변경을 시도하면 컴파일 에러가 발생하게 된다. List.of 는 null을 허용하지 않는다. ..

    [Java] Stream의 distinct()와 sorted() 어느 것부터 먼저 해야할까??

    Stream의 distinct()와 sorted() 어느 것부터 먼저 해야할까?? numbers.stream() .distinct() .sorted() .collect(Collectors.toList()); numbers.stream() .sorted() .distinct() .collect(Collectors.toList()); 다음과 같이 위의 두 코드 중 어떤 방식을 선택해야 할까?? sorted()는 흔히 우리가 생각하는 작동방식과 살짝 다르다. List list = List.of(2, 5, 4, 7, 3, 98, 2); List collect = list.stream() .peek(System.out::println) .distinct() .peek(i -> System.out.println("..

    [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..