Java 81

[Java]Map계열 - Hashtable

Map계열에는 또 다른 종류의 클래스인 Hashtable클래스가 있다 Hashtable클래스(Map계열)에서는 keySet()/values()/ keys()/get("키값")메소드를 모두 사용할 수 있다. 또한 HashMap클래스에는 keys()메소드가 없다는 점에 주의하자. ▲Hashtable클래스를 Raw type + Heterogenious로 만들어 보았다. 객체를 저장하는 법은 Map계열에서 사용하는 put()메소드를 이용해서 하면된다. HashMap포스팅에서도 설명했듯이 put()메소드를 사용하면 해당 키값이 최초라면 자동초기화된 값을, 이전에 해당키로 저장한 적이 있다면 바로 이전에 저장된 객체의 값을 반환한다는 특징이있다. Hashtable에는 Enumeration이라는 인터페이스를 사용할 ..

Java 2022.03.19

[Java]Map계열 - HashMap

HashMap의 특징 Map(인터페이스)계열의 컬렉션 클래스이다. key와 value(객체)의 쌍으로 객체 저장 키값으로 검색하기 때문에 다른 컬렉션보다 검색속도가 빠르다. 키값은 중복이 안된다. 바로 예제를 보면서 알아보자. 1) 컬렉션 객체 생성 ▲ 타입 파라미터에 아무것도 넣지않은 Raw Type의 객체를 생성했다. 2) 객체 저장 ▲ Map계열의 클래스에서 객체를 저장할 때는 put()메소드를 사용한다. put()메소드는 첫번째 인자로 키값을, 두번째 인자로 Value(객체)값을 받는다. 여기서는 우리가 타입파라미터에 아무것도 지정하지 않았기때문에 모든 타입의 키값과 객체값을 넣을 수 있다. 또한 put()메소드로 저장시 해당 키값으로 이전에 저장한 객체를 반환하는 특징을 가지고 있다. 즉, 우리..

Java 2022.03.18

[Java]배열과 List컬렉션 객체 정렬하기

이번 포스팅에서는 배열이나 컬렉션(List계열만)에 저장된 객체(데이타) 정렬하는 법을 알아보자 우선 배열과 컬렉션(List계열만)에서의 각각의 오름차순과 내림차순을 사용하는 법은 아래와 같다. 주의사항은 배열의 타입 혹은 List계열 컬렉션에 저장된 객체의 타입은 반드시 Comparable인터페이스를 상속받고 compare()를 오버라이딩 해야한다는 것이다! 참조형클래스들은 기본적으로 Comparable인터페이스를 상속받고있다. 예제를 직접보는것이 이해하는데 훨씬 도움이 될 것이다. 먼저 배열 예제부터 보자. ▲ String타입의 배열을 생성하고 초기화도 하였다. 방법1)은 아주 심플한 방법이다. 방법2)는 현재 String타입의 배열이기 때문에 Comparable인터페이스를 자동상속 받은 상태이다. ..

Java 2022.03.17

[Java]Collection - List계열(ArrayList)

이번 포스팅에서는 Collection상속을 받은 것 중 또 다른 하나인 List계열에 대해서 알아보자. List계열 컬렉션에는 ArrayList클래스와 Vector클래스가 있다. ArrayList클래스부터 알아보자. ArrayList란? List(인터페이스)계열의 컬렉션 클래스이다. 중복저장기능이 있으며 데이터를 저장할 때 순서있게 저장된다. 즉, 배열형태로 메모리가 형성되어 데이터가 저장된다. 데이터를 꺼내올 때는 Iterator() 또는 get(index) 또는 확장 for문을 사용한다. 예제를 보면서 이해해보자 1) List 계열 컬렉션 객체 생성(Raw Type) ▲ 연산자를 중심으로 좌측에는 List컬렉션이 우측에는 List 컬렉션 클래스 중 하나인 ArrayList()를 사용하여 헤테로 지니어..

Java 2022.03.17

[Java]Collection - Set계열(HashSet)

Collection이란? : : 메모리 기반의 객체 저장소이다. Collection의 특성 컬렉션은 heap영역에 생성된 여러 객체들의 주소값을 컬렉션 메모리에 담는다. 컬렉션은 인스턴스화된 객체를 저장하는 자료구조이다. 컬렉션은 객체의 주소값을 저장해 해당 객체를 저장, 삭제, 검색, 수정 등이 가능하다. 컬렉션은 곧 인터페이스이다. 따라서 컬렉션을 상속받은 클래스를 컬렉션 클래스라고 한다 Collection의 주요 메소드 int size() collection에 저장된 객체의 갯수 리턴 boolean isEmpty() collection 객체가 비어있으면 true, 아니면 false반환 boolean add(Object obj) 객체 추가. 성공시 true반환 boolean remove(Object ..

Java 2022.03.16

[Java]인터페이스(Interface)

인터페이스(Interface)란? : 클래스가 객체의 설계도라면 인터페이스는 클래스의 설계도라 할 수 있다. 인터페이스의 성질 자바는 단일상속이 원칙이나 인터페이스를 이용해서 하나의 클래스에 다중상속을 구현할 수 있다. 추상클래스처럼 상속이 목적으로 상속받은 클래스는 추상메소드를 오버라이딩해야 하기 때문에 동일한 API를 사용할 수 있다. 인터페이스의 맴버로는 추상메소드와 상수로만 구성된다. 인터페이스의 접근지정자는 public과 default만 가질 수 있다. modifier는 가질 수 없다. 인터페이스에 있는 추상메소드는 public과 abstract키워드를 생략한다.(붙여도 되긴 된다) 인터페이스의 상수 또한 public static final을 생략해도 컴파일러가 자동으로 붙여준다. 자식의 오버라..

Java 2022.03.16

[Java]추상클래스(Abstract Class)와 추상메소드(Abstract Method)

추상 메소드란? 메소드 앞에 abstract키워드가 붙은 것 메소드 원형만 있고 구현부가 없는 것 형식] 접근지정자 abstract 반환타입 메소드명(매개변수); - 여기서 매개변수는 선택사항이다. 추상메소드의 궁극적인 목표는 오버라이딩이다. 추상 클래스의 성질 class앞에 abstract (modifier)를 붙이면 그 클래스는 추상 클래스가 된다. 어떤 클래스가 추상메소드를 가지면 그 클래스를 반드시 추상 클래스로 만들어줘야 한다. 단, 추상 메소드가 없어도 class 앞에 abstract만 붙이면 추상 클래스가 될 수 있다. 추상 클래스는 인스턴스화 할 수 없다. 즉, 메모리에 객체를 생성할 수 없다 . 즉, new연산자로 메모리를 할당할 수 없다. 구현부가 없기 때문에 구현할 수 없기 때문이다...

Java 2022.03.16

[Java]Object Class

Java의 모든 클래스의 최상위 부모는 Object클래스이다. Object클래스의 toString()메소드는 객체의 주소를 String타입으로 반환해주는 메소드이다. => 패키지명.클래스명@주소(16진수) 형태로 주소를 반환한다. Object클래스의 equals()메소드는 두 객체간의 주소값을 비교해서 같으면 true 다르면 false를 반환한다. => 비교클래스의 인스턴스변수.equals(대상클래스의 인스턴스변수) 형태 예제를 보면서 알아보자. ▲ MyClass라는 클래스를 만들고 맴버로 data와 인자생성자 하나를 생성했다. ▲ Object클래스에서 주소값을 반환하던 toString()메소드와 주소값을 비교하던 equals()메소드를 오버라이딩하여 주소값이 아닌 실제 데이터값을 출력하고 비교하는 메소..

Java 2022.03.15

[Java]Heterogenious(이질화) & Homogenious(동질화)

Homogenious(동질화)란? 같은 타입의 인스턴스 변수에 같은 타입의 메모리 주소를 저장 예) Student st = new Student(); Heterogenious(이질화)란? 부모타입의 인스턴스 변수에 자식타입의 메모리 할당해서 그 주소를 저장 [전제조건] 두 클래스 사이에 상속관계가 존재해야한다. 예) Person person = new Student(); 부모타입의 인스턴스 변수가 접근 할 수 있는 범위 1. 부모로부터 상속받는 맴버 2. 자식에서 오버라이딩한 메소드가 우선 호출된다. ※ 자식에서 새롭게 정의한 맴버는 접근불가하다! (오버로딩한 메소드도 포함!) 헤테로 지니어스의 장점 메소드의 매개변수를 부모타입으로 정의시 모든 자식타입을 저장할 수 있음으로 자식클래스 수만큼 메소드를 오..

Java 2022.03.15