본문 바로가기

Study59

[Java] java.util.Collections 주요 메소드 정리 설명에 앞서, 컬렉션의 중복되는 의미들을 살펴볼게요 컬렉션의 중복되는 의미들 1.collection(소문자 c): 객체가 저장되고 반복되는 자료 구조를 나타냅니다. 2.Collection(대문자 C): Set, List, Queue가 상속받는 java.util.Collection 인터페이스입니다. ( 이는 상속입니다. 구현이 아니라. 즉, Collection를 직접 구현한 것은 없습니다. ) 3.Collections(대문자 C, s로 끝남): collections에 사용할 정적 유틸리티 메소드의 모음이 있는 java.util.Collections 클래스입니다. 1, 2에 관련된 내용은 아래 포스팅에서 다뤘어요. [Java] 컬렉션 프레임워크(Collections Framework) 이번 포스팅에서 살펴 .. 2021. 4. 10.
[Java] Arrays.asList() vs Collections.singletonList() java.util.Colletions애는 컬렉션 프레임워크 타입의 객체에 대한 객체생성, 정렬, 병합, 검색 등의 알고리즘을 구현한 메소드가 정의되어 있어요. 저는 그중 Colltions.singletonList()를 사용해보았어요. 기술설명 java.util.Colletions에는 아래와 같이 메소드가 정의되어있는데요 public static List singletonList(T o) { return new SingletonList(o); } 전달인자로 들어온 객체만 포함하는 불변의 리스트를 반환하는 메소드예요. 예제 이 기술을 사용하기 전에는 CarNames carNames = CarNames.of(Arrays.asList(new CarName("pobi"))); 위와 같이 사용했는데 이후엔 CarN.. 2021. 4. 9.
[MYSQL] 우테코 레벨1 SQL 미션 실습은 https://www.w3schools.com/sql/trymysql.asp?filename=trysql_func_mysql_concat 위의 링크에서 진행할 수 있어요. 위 실습 링크에 있는 DB를 기준으로 작성된 문제와 답입니다. 1. 200개 이상 팔린 상품명과 그 수량을 수량 기준 내림차순으로 보여주세요. 결과 답 SELECT od.productID, pr.ProductName, sum(quantity) AS sum FROM OrderDetails AS od JOIN Products AS pr ON od.productID = pr.productID GROUP BY od.productID HAVING sum >= 200 ORDER BY sum DESC; 2. 많이 주문한 순으로 고객 리스트(.. 2021. 4. 4.
[Java] abstract 클래스와 interface는 언제 사용할까? 용어정리 우선 간단히 용어를 살펴보기로 해요. abstract 클래스( 미완성 클래스 ) 추상메서드가 없거나, 하나 이상을 포함하는 클래스에요.(추상 메서드가 하나 이상 포함될 시, 클래스 앞에 abstract를 반드시 표기해야해요) 인스턴스화가 불가능 하지만, 서브 클래싱은 가능해요. abstract class Car { } class BumperCar extends Car { } public static void main(String[] args) { Car car = new Car(); // x Car car2 = new BumperCar(); // o } interface interface는 자바에서 한 단계 더 높은 추상화를 하기 위해 사용돼요. 추상 메소드와 상수, 디폴트 메소드로 이루어진 클.. 2021. 4. 4.
[Java] 원시값 포장이란? 원시값 포장이라는 말이 모호해요. 우선 원시값 포장이라는 말이 어디서 나왔는지 확인해볼 필요가 있어요. 모든 원시값과 문자열을 포장하라 라는 말은 객체지향 체조 원칙에서 나온 말이에요. 원시값 포장이 왜 필요하죠? 원시값 포장은 Primitive Obsession Anti Pattern(도메인의 객체를 나타내기 위해 primitive타입을 쓰는 나쁜 습관)을 피하기 위해 필요해요. 즉, 원시값 포장은 원시 유형의 값(변수명)을 이용해 의미를 나타내지 않고, 의미있는 객체로 포장한다는 개념이라 볼 수 있어요. 아직 설명이 부족해요. 게임을 위한 배팅 금액을 아래와 같이 나타낼 수 있어요. public class Foo { private int bettingMoney; public void addMoney(.. 2021. 3. 15.
[Java] instanceof vs isInstance() instanceof과 isInstance()모두 객체의 클래스를 확인하는데 사용합니다. 하지만 클래스의 체크 시점이 정적(컴파일 타임)이냐 동적(런타임)이냐의 차이를 보입니다. 즉, instanceof는 컴파일타임에 타입 에러를 체크하고, isInstance()는 런타임에 타입 에러 체크를 합니다. isInstance() 사용 예 // Java program to demonstrate working of isInstance() // method public class Test { // This method tells us whether the object is an // instance of class whose name is passed as a // string 'c'. public static bo.. 2021. 3. 11.
[Java] 정적 팩토리 메서드 장단점과 사용시기 정적 팩토리 메소드의 특징 정적 팩토리 메소드의 장점은 곧 특징이 돼요. 크게 4가지의 장점이 있어요. 장점 이름이 있으므로 생성자에 비해 가독성이 좋다. 호출할 때마다 새로운 객체를 생성할 필요가 없다. 하위 자료형 객체를 반환할 수 있다. 형인자 자료형 객체를 만들 때 편리하다. 단점으로는 2가지가 있는데요. 단점 정적 팩토리 메서드만 있는 클래스라면, 생성자가 없으므로 하위 클래스를 못 만든다. 정적 팩토리 메서드는 다른 정적 메서드와 잘 구분되지 않는다. (문서만으로 확인하기 어려울 수 있음) 장, 단점을 알면, 이제 도대체 언제 써야하는지 알아야겠죠? 그전에 매번 헷갈리는 정적 팩토리 메소드의 네이밍 컨벤션을 조금 살펴보고 가야할거 같아요. 정적 팩토리 메소드 네이밍 컨벤션 from: 하나의 매.. 2021. 3. 10.
[Java] 상속은 캡슐화를 깨뜨린다? public class Car{ private final String name; Car(String name) { this.name = name; } public final String getName() { return name; } } public class Avante extends Car{ Avante(String name) { super(name); } public void print() { System.out.println(getName()); } } 현재와 같이 부모 객체(Car)의 멤버변수가 private이고 메서드가 public final로 되어있는 상태에서도, 상속때문에 캡슐화가 깨졌다고 볼 수 있는건가? → 그렇지않다.현재 부모객체의 것들을 자식객체가 변경하지 못한다 (final 메소드.. 2021. 3. 6.
[Java] 컬렉션 프레임워크(Collections Framework) [Java] 컬렉션 프레임워크(Collections Framework) 자료구조의 분류 자료구조 분류법은 많은 분류법이 있지만, 대표적으로 많이 분류되는 방법은 선형 자료구조(Linear Data Structure)과 비선형 자료구조(Nonlinear Data Structure)로 나눌 수 있습니다. 이러한 분류를 보통 '형태에 따른 자료구조'라고 보고, 각 자료구조에 알맞게 구체화 된 것들을 '구현된 자료구조'라고 합니다. 먼저 선형 자료구조(Linear Data Structure)에 대해 알아보면, 선형 자료구조는 쉽게 생각해서 데이터가 일렬로 연결된 형태라고 보면 됩니다.. 우리가 흔히 쓰는 int[] 배열같은 것이라 생각하면 됩니다.. 선형 자료구조는 대표적으로 리스트.. 2021. 2. 28.