Java 48

제네릭(Generic)

=== 타입에 제한이 없는 제네릭 클래스 === // 클래스 이름 다음에 제네릭 타입 T extends Employee 를 선언한다. // 제네릭 타입 T extends Employee 의 뜻은 Box_Employee 클래스에서 선언되어지는 필드의 타입과 // 메소드의 파라미터 및 리턴타입에서 어떤 클래스라도 타입으로 들어올 수 있다는 것이다. 목표: 임직원, 평직원으로 구분되는 직원들의 직원정보를 표시하려 한다. 직원정보는 1. 아이디, 2. 비밀번호, 3. 성명, 4. 직급 으로 1번부터 4번까지는 동일하지만 5번 항목에서는 임직원은 법인카드번호, 평직원은 연봉으로 다르게 구성하고자 한다. 클래스 목록 - Main - Employee - Box_Employee - Child_Plain - Child_..

Java 2022.06.30

컬렉션(Collection) - 6. Properties

Properties 는 HashMap의 구버전인 Hashtable을 상속받아 구현한 것으로, Hashtable 은 키와 값(Object, Object)의 형태로 저장하는데 비해서 Properties 는 *(String 키, String 밸류값)*의 형태로 저장하는 단순화된 컬렉션 클래스이다. 키는 고유해야 한다. 즉, *중복을 허락하지 않는다.* 중복된 값을 넣으면 마지막에 넣은 값으로 덮어씌운다. 주로 어플리케이션의 환경설정과 관련된 속성(property)을 저장하는데 사용되며, 데이터를 파일로 부터 읽고 쓰는 편리한 기능을 제공한다. 1. Property에 값 저장 public static void main(String[] args) { Properties prop = new Properties();..

Java 2022.06.30

컬렉션(Collection) - 5. HashSet, LinkedHashSet

== HashSet == 1. 출력시 저장된 순서가 유지되지 않는다. 2. *중복된 데이터를 저장할 수 없다.* 그러므로 Collection 내의 중복된 요소들을 저장하지 않고자 할때 많이 사용된다. == LinkedHashSet == 1. 출력시 저장된 순서가 유지된다. 2. 중복된 데이터를 저장할 수 없다. 그러므로 Collection 내의 중복된 요소들을 저장하지 않고자 할때 많이 사용된다. // ======================================== [ HashSet ] ========================================// 1. Member 클래스의 객체만을 저장할 수 있는 HashSet 객체 mbrHashSet 을 생성한다. public static vo..

Java 2022.06.29

컬렉션(Collection) - 4. HashMap

HashMap 은 특정값을 찾을 때 유용하다. === Map 계열 === 1. HashMap 과 Hashtable(Web용) 이 있다. 2. Map 계열은 List 계열(Vector, ArrayList, LinkedList)처럼 index 가 사용되어 저장되는 것이 아니라, Map 계열은 key값과 value값을 쌍으로 사용하여 저장하는데 데이터 저장시 사용되는 메소드는 put(String key, Object value)메소드를 사용한다. 이때 key값은 반드시 고유한 값을 가져야 하고, value값은 *중복된 값이 와도 괜찮다*. 3. Map 계열에 저장된 key값들은 순서와는 상관없이 저장된다. 4. Map 계열에 저장된 value값을 추출하려면 key를 이용해서 가져오는데 value 값의 추출은 ..

Java 2022.06.29

컬렉션(Collection) - 3. LinkedList

LinkedList는 모든 값을 출력할 때 유용하다. == LinkedList == 1. 출력시 저장된 순서대로 나온다. 2. 중복된 데이터를 저장할 수 있다. 3. 데이터를 읽어오는 속도는 LinkedList 가 ArrayList 보다 상대적으로 느리다. 4. 순차적으로 데이터를 추가/삭제하는 경우에는 LinkedList 가 ArrayList 보다 상대적으로 느리다. 5. 일반적인 데이터 추가/삭제는 데이터 중간 중간마다 발생하므로 이러한 경우에는 LinkedList 가 ArrayList 보다 상대적으로 빠르다. 6. 결과값은 ArrayList 를 사용하든지 LinkedList 를 사용하든지 동일한 결과값을 가진다. 7. LinkedList 보다는 ArrayList 를 사용하도록 하자. == Linke..

Java 2022.06.29

컬렉션(Collection) - 2. ArrayList

== ArrayList == 1. 출력시 저장된 순서대로 나온다. 2. 중복된 데이터를 저장할 수 있다. 3. 데이터를 읽어오는 속도는 ArrayList 가 LinkedList 보다 상대적으로 빠르다. 4. 순차적으로 데이터를 추가/삭제하는 경우에는 ArrayList 가 LinkedList 보다 상대적으로 빠르다. 5. 일반적인 데이터 추가/삭제는 데이터 중간 중간마다 발생하므로 이러한 경우에는 ArrayList 가 LinkedList 보다 상대적으로 느리다. 6. 결과값은 ArrayList 를 사용하든지 LinkedList 를 사용하든지 동일한 결과값을 가진다. 7. LinkedList 보다는 ArrayList 를 사용하도록 하자. public static void main(String[] args) ..

Java 2022.06.28

콜렉션(Collection) - 1

== Array(배열) 와 Collection(자료구조)의 차이점은 == 1. Array(배열)은 크기가 한정 되어져 있지만 Collection(구조체)은 크기가 무한정 이다. 2. Array(배열)은 배열에 선언되어진 동일한 타입의 데이터만 입력가능하지만 Collection(구조체)은 입력되어지는 데이터가 객체(Object)이기만 하면 어떤것이든지 입력가능하다. ==== 배열(Array)과 자료구조(Collection)의 차이점 ==== 1. 배열(Array)은 오로지 동일한 데이터 타입만 들어가는 저장소이다. 배열(Array)은 그 크기가 한번 정해지면 크기를 변경할 수 없다.!!! 2. 자료구조(Collection)은 동일한 타입의 객체가 아니더라도 객체타입이기만 하면 모두 들어가는 저장소이다. 자..

Java 2022.06.28

람다(Lambda)

람다(Lambda) 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어이다. 현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 *단순하게* 표현하는 방법이다. 람다 대수는 이름을 가질 필요가 없다. 즉, 익명 함수 (Anonymous functions)이다. 람다식(Lambda)은 익명함수(anonymous function)을 생성하기 위한 식으로서 객체 지향 언어보다 *함수 지향 언어*에 가깝다. 자바에서 람다식의 사용 목적은 인터페이스에 정의된 메소드를 구현시 코딩양을 확 줄여서 간편하게 사용하는 것이 목적이다. 자바에서는 함수 단독으로는 사용할 수 없..

Java 2022.06.28

익명(무명)클래스(anonymousClass)

* 메소드를 재정의하려면 클래스가 필요한데 이를 저장해서 매번 쓸 필요는 없고 일회용으로 사용하고 싶을 때 * 익명(무명) 클래스는 말 그대로 이름이 없는 클래스이다. 인터페이스를 구현한 클래스가 특정한 한곳에서만 사용되고 다른 곳에서는 재사용되지 않는 경우이라면 이럴 경우에는 굳이 클래스 파일로 만들 필요 없이 익명(무명) 클래스로 사용하면 된다. 익명(무명) 클래스의 객체는 반드시 부모 클래스를 상속받는 클래스 이거나 인터페이스를 구현한 클래스이어야 한다. 왜냐하면 클래스의 이름은 없지만 저장받는 타입은 존재해야 하기 때문이다. 그래서 익명(무명) 클래스의 객체는 부모 클래스 또는 인터페이스로 받게 되어있다. 익명(무명) 클래스를 사용하는 가장 큰 목적은 부모 클래스를 상속받는 자식 클래스를 생성하지..

Java 2022.06.28

Exception 생성하기

=== 사용자(개발자) 가 정의하는 예외(Exception)절 클래스 만들기 === // 1. Exception 클래스를 상속받아야 한다. 2. 생성자 내에서 예외메시지(오류메시지)를 등록해주면 끝난다. Jaego_lack_Exception 클래스 public class Jaego_lack_Exception extends Exception { private static final long serialVersionUID = 1L; // 기본생성자 public Jaego_lack_Exception() { super(">> 잔고량이 주문량보다 적으므로 주문이 불가합니다. > " + prod_name + "의 재고(" + jango + "개)가 주문량(" + jumun_su + "개)보다 적으므로 주문이 불가합..

Java 2022.06.25