Java 공부 (27) 썸네일형 리스트형 15장 List 컬렉션 List 컬렉션List 인터페이스를 구현한 컬렉션을 말한다. 특징?-인덱스로 관리-중복해서 객체 저장 가능하다.-각각의 인덱스에 "객체의 번지"가 저장이 된다. 구현클래스ArrayList , Vector ,LinkedList 주요 메소드-객체 추가boolean add(E e) 주어진 객체를 맨 끝에 추가void add(int index, E element) 주어진 인덱스에 객체를 추가set(int index, E element) 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈-객체 탐색boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부E get(int index) 주어진 인덱스에 저장된 객체를 리턴isEmpty() 컬렉션이 비어 있는지 조사 비어있다면 true, 비어있지.. 15장 컬렉션 프레임워크 컬렉션 : 객체를 모아둔 것프레임워크 : 정형화된 체계적인 프로그래밍 방식컬렉션 프레임워크 : 컬렉션을 다루기 위한 표준화된 프로그래밍 방식 컬렉션 프레임워크란,- java.util패키지에는 자료를 다룰 수 있는 자료구조 클래스가 다수 존재한다. 자료구조란 자료를 저장할 수 있는 구조를 말하고, 자료구조 클래스들을 컬렉션 프레임워크라고 한다.-컬렉션 프레임워크라는 것은 다른말로 컨테이너라고도 부른다 (값을 담는 그릇이라는 의미)-자료구조형 안에서는 객체의 주소만을 관리한다 => 데이터를 관리하는 것이 아니라 데이터가 있는 곳의 주소를 관리 배열의 문제점-저장할 수 있는 객체 수가 배열을 생성할 때 결정-> 불특정 다수의 객체를 저장할 수 없다.-객체를 삭제했을 때 해당 인덱스가 비게 된다. 이 두가지의 .. 14장 람다식 람다식이란?y=f(x) 형태의 함수로 구성된 프로그래밍의 기법이다.함수적 프로그래밍 기법은 y=f(x)와 같이 데이터를 매개값으로 전달하고 결과를 받는 코드를 말한다.함수적 프로그래밍 기법을 사용하면 좋은점 2가지가 있다.1) 대용량 데이터의 처리에 유리하다.데이터의 객체를 생성한 후에 처리하는것 보다 데이터를 바로 처리하는 것이 속도에 유리하다.또한 멀티 코어 CPU에서 데이터를 병렬 처리하고 취합할 때 객체보다는 함수가 유리하다.2) 이벤트 지향 프로그래밍(이벤트가 발생하면 핸들러 함수 실행)에 적합하다.반복적인 이벤트 처리는 핸들러 객체보다는 핸들러 함수가 적합하다. 자바는 람다식을 언어 차원에서 제공하여 코드를 간결하게 하는데 대표적으로 익명함수를 생성하기 위한 식에서 람다식을 볼 수 있다.(타입.. 13장 제네릭(Generic)(8)_확인문제 문제4. Util.getValue( ) 메소드는 첫 번째 매개값으로 pair타입과 하위 타입만 받고, 두 번째 매개값으로 키 값을 받는다.리턴값은 키값이 일치할 경우 Pair에 저장된 값을 리턴하고, 일치하지 않으면 null을 리턴하도록 getValue()제네릭 메소드를 정의하라 실행클래스 (UtilExample)public class UtilExample { public static void main(String[] args) {Pair pair = new Pair("홍길동",35);Integer age = Util.getValue(pair, "홍길동");System.out.println(age);ChildPair childpair = new ChildPair("홍삼원",20);Integer child.. 13장 제네릭(Generic)(7)_정리 제네릭이란?타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 하는 것컬렉션, 람다식, 스트림에서 사용 제네릭을 사용하는 이유?1. 컴파일 시 강한 체크 타입하여 에러를 사전에 방지 -> 실행 시 타입에러 나는 것을 방지해준다 2. 타입 변환을 제거-> 빈번한 타입 변환은 애플리케이션 성능 저하로 이루어짐 제네릭 타입이란?타입을 파라미터로 가지는 클래스, 인터페이스 말한다.public class Box { ... } 사용할 때에는Box box = new Box( ); *Box box = new Box();와 같이 T자리에 구체적인 타입 지정해주지 않으면 Object가 들어간다. 제네릭 타입 선언 시 두 개이상 타입 파라미터를 사용할 수 있다 ---> 멀티 타입 파라미터public class Box .. 13장 제네릭(Generic)(6)_제네릭 타입의 상속과 구현 제네릭 타입의 부모클래스를 상속할 경우 자식 클래스 또한 제네릭 타입이어야 한다.부모클래스에 기술된 타입 파라미터는 자식클래스에도 기술해야 한다.public class ChildProduct extends Product { ... }또한 자식 클래스는 추가적인 타입 파라미터를 가질 수 있다.public class ChildProduct extends Product { ... } 제네릭 타입 인터페이스를 구현하는 구현객체일 경우 구현클래스도 제네릭 타입이어야 한다.인터페이스에 기술된 타입파라미터가 구현클래스에도 기술되어야 한다.public class StorageImpl implements Storage { ... } 즉, 제네릭 타입의 클래스를 상속하려면 자식 클래스도 제네릭 , 타입 파라미터도 그대로 .. 13장 제네릭(Generic)(5)_와일드 카드 타입 API Document의 매개변수나 리턴타입에서 자주 볼 수 있는 와일드 카드 타입에 대해서 알아본다. 와일드카드(?)타입?- 이미 선언되어 있는 제네릭 타입을 매개변수나 리턴타입으로 사용할 때, 타입 파라미터를 제한할 목적으로 사용한다.** 은 제네릭 타입을 선언할 때 타입 파라미터를 제한하기 위해 쓴다.- 와일드카드 타입의 세가지 형태1. 제네릭타입 : Unbounded Wildcards (제한없음)2. 제네릭타입 course) {System.out.println(course.getName()+ " 수강생: "+ Arrays.toString(course.getStudents()));}public static void registerCourseStudent(Course 13장 제네릭(Generic)(4)_제한된 타입 파라미터 타입 파라미터에 지정되는 구체적인 타입을 상속 및 구현 관계를 이용해서 제한할 수 있다.Public 리턴타입 메소드(매개변수1,매개변수2, ...) { ... } --> 상위 타입은 클래스 뿐만 아니라 인터페이스도 가능하다.*인터페이스라고해서 extends 대신 implements를 사용하지 않는다. *여기서 extends는 상속의 개념이 아니라 종류라는 의미라고 생각할 것 - 타입 파라미터를 대체할 구체적인 타입--> 상위타입이거나 하위 또는 구현 클래스만 지정할 수 있다.* 즉, 상위타입에 클래스가 왔다면 자식클래스, 상위타입에 인터페이스가 왔다면 구현클래스가 타입파라미터가 될 수 있다. - 주의할 점--> 메소드의 중괄호 { } 안에서 타입 파라미터 변수로 사용 가능한 것은 상위 타입의 멤버(필드,.. 13장 제네릭(Generic) (3)_제네릭 메소드 제네릭은 타입을 선언할 때 뿐만 아니라 메소드를 선언할 때에도 제네릭을 사용할 수 있다. 제네릭 메소드?- 매개변수 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드를 말한다.- 제네릭 메소드 선언 방법- 리턴타입 앞에 기호를 추가하고 타입 파라미터를 기술한다.- 타입 파라미터를 리턴타입과 매개변수에 사용한다.public 리턴타입 메소드명(매개변수,...) { ... }public Box boxing(T t) { .... } 예제1 >>제네릭 타입으로 선언된 Box클래스public class Box {private T t; public T getT() {return t;}public void setT(T t) {this.t = t;}} 제네릭 메소드를 가지는 Util 클래스public class .. 13장 제네릭(Generic) (2)_멀티 타입 파라미터 제네릭 타입을 선언을 할 때 두 개 이상의 타입 파라미터를 사용해서 선언할 수 있다.class { ... }interface { ... } Product클래스를 제네릭 타입으로 선언한다면 다음과 같이 쓸 수 있다.public class Product { private T kind; private M model; public T getKind() { return kind; } public void setKind(T kind) { this.kind = kind; } public M getModel() { return model; } public void setModel(M model) { this.model = model; } } 메인클래스에서 Product클래스의 객체를 생성해서 사용한다면Product p.. 이전 1 2 3 다음