스파르타 코딩클럽 (항해99) 비추 이유 알아보기 스파르타코딩클럽의 경우, 일부 학생들은 과제의 난이도가 높아서 수강생들이 따라가기 어렵다는 평가를 하고 있으며, 예제와 실제 과제가 다르거나, 과제의 난이도와 수업에서 배우는 내용의 불일치 등이 불만족 요인으로 언급되고 있습니다. 또한, 학원 내부의 교육환경이나 컴퓨터 인프라 등이 미흡한 경우도 있어 수강생들이 불편함을 겪는 경우가 있습니다. 학생들이 비추 (불만족을 제기하는) 이유 1. 과제 난이도 부담 스파르타코딩클럽의 과제는 난이도가 높아서 수강생들이 쉽게 이해하고 따라가기 어렵다는 평가가 많습니다. 2. 교육 내용의 불일치 수업에서 배우는 내용과 과제의 난이도가 상이하거나, 예제와 실제 과제가 다르다는 의견이 있습니다. 이로 인해 학생들이 교육을 ..
List, Set, Queue => Collection => Iterable 순서로 implements 하고있다. Iterable 인터페이스 안에는 iterator 메소드가 추상메소드로 선언되어 있으며, Collection 인터페이스 계층구조에서 List, Set, Queue를 구현하는 클래스는 다 iterator 메소드를 가지고 있다. Iterable의 역할은 iterator() 메소드를 하위 클래스에서 무조건 구현하게 하기 위함이다. 1. Iterator란 자바 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법으로 Iterator 인터페이스 표준화하고 있다. Iterator 인터페이스의 내부는 위와 같이 구현되어있으며 hasNext(), next(), remove() 메소드를 사용할 수 있다...
Arrays.asList vs List.of()의 차이 알아보기 1. Array.asList String[] array = {"apple", "banana", "orange"}; List list = Arrays.asList(array); 이 경우, Arrays.asList()는 배열의 각 요소를 List의 요소로 추가합니다. 이 메서드는 배열과 List 간의 양방향 연결(뷰)을 생성하며, 배열이나 List 중 어느 한 쪽이 변경되면 다른 쪽에도 반영됩니다. Arrays.asList()로 생성된 List는 가변 리스트이므로 크기를 변경할 수있다. 2. List.of() List list = List.of("apple", "banana", "orange"); List.of() 메서드는 Java 9에서 추가..
java for문 vs forEach문 성능 알아보기 1. for문 for문은 배열과 컬렉션의 모든 요소에 대해 인덱스를 이용하여 접근하는 방법입니다. for문은 요소를 읽기 전용으로 접근할 때 가장 효율적입니다. int[] arr = {1, 2, 3, 4, 5}; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } 2. forEach문 forEach문은 Java 5부터 지원하는 향상된 for문입니다. forEach문은 배열과 컬렉션의 모든 요소에 대해 순서대로 접근하는 방법입니다. forEach문은 요소를 수정하지 않고 읽기만 할 때 가장 효율적입니다. List list = Arrays.asList(1, 2, 3, 4, 5); fo..
[Java] 자바 코드 실행 시간 구하는 방법 알아보기 1. System.currentTimeMillis()와 System.nanoTime() 메서드를 사용하는 방법 System.currentTimeMillis() 메서드는 현재 시간을 밀리초 단위로 반환 long startTime = System.currentTimeMillis(); // 실행 시간을 측정하고자 하는 코드 long endTime = System.currentTimeMillis(); long elapsedTime = endTime - startTime; System.out.println("Elapsed time: " + elapsedTime + "ms"); System.nanoTime() 메서드는 현재 시간을 나노초 단위로 반환 long ..
e.toString(), e.getMessage(), e.printStackTrace() 예외처리 알아보기 1. e.toString() e.toString() 메서드는 예외 객체의 문자열 표현을 반환합니다. 이 메서드는 예외를 간단하게 출력하고자 할 때 사용할 수 있습니다. try { // 예외 발생 가능한 코드 } catch (Exception e) { System.out.println(e.toString()); } 2. e.getMessage() e.getMessage() 메서드는 예외 객체의 메시지를 반환합니다. 이 메서드는 예외 메시지만 출력하고자 할 때 사용할 수 있습니다. 다음은 예시입니다. try { // 예외 발생 가능한 코드 } catch (Exception e) { System.out...
[JAVA] List의 null 체크 (with isEmpty()) 아래와 같은 List가 있다고 가정할때 List stringList = new ArrayList(); stringList.get(0); List에 아무런 값이 없을 경우에 위와 같이 get을 사용하여 값을 가져오고자 하면 Nullpointerexception이 발생하게 된다. if (stringList != null && !stringList.isEmpty()) { TestDto testDto = stringList.get(0); } 이경우 null과 "" 빈값을 체크해주면 된다. 또는 ObjectUtils.isEmpty();를 사용해주면 되는데 ObjectUtils.isEmpty() 란? null과 .isEmpty()를 동시에 체크하고..
[JAVA] 빌더 패턴(Builder Pattern) 사용해야 하는 이유 생성자는 빌더패턴에 비해 단점이 너무 많다 매개변수가 많을 경우에 대응이 어렵다. 생성자 호출을 위해서 설정하길 원하지않는 매개변수의 값까지 지정해줘야하는 불편함 실수로 매개변수의 순서룰 바꿀수있다. 자바빈즈 패턴 매개변수가 없는 생성자로 객체를 만든 후 Setter메서드를 사용하여 매개변수의 값을 설정하는 방식 디폴트 생성자를 통해 객체만 생성하고 필요한 경우 매개변수들을 setter로 값을 설정해주는데 매개변수의 갯수가 너무 많다면 객체가 생성되기 전까지 일관성이 깨지게된다. 디버깅이 어렵다 빌더패턴 위와같은 단점을 해결하기 위해 나온게 빌더패턴 (Builder Pattern)이다. 점층적 생성자 패턴의 안전성과 자바빈즈 패턴의..
[JAVA] streamApI로 숫자 합산하기 기본형 특화 스트림 int 요소 : IntStream double 요소 : DoubleStream long 요소 : LongStream 숫자 스트림의 합계를 계산하는 SUM, 최댓값 요소를 검색하는 MAX 각각 인터페이스는 리듀싱 연산 수행 메서드와 다시 객체 스트림으로 복원하는 기능도 제공한다. int calories = menu.stream() .map(Dish::getCalories) .reduce(0, Integer::sum); 숫자 스트림으로 매핑 mapToInt, mapToDouble, mapToLong 3가지 메서드를 가장 많이 사용 mapToInt 메서드는 Dish에서모든 Calories를 가져와 IntStream으로 반환하며 sum 메서드를 ..
Java Map null값 체크하는 방법 Java map null값 체크방법 3가지를 알아보도록하겠습니다. 1. common-collections4 dependency 사용 1. dependency 추가 // https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' 2. MapUtils를 사용하여 null 체크 Map map = new HashMap; MapUtils.isEmpty(map); 3. MapUtils.isEmpty() 메소드 사용 /** * Null-safe ..