17. JAVA 인터페이스 (Interface) / 컬렉션 (Collection)

2020. 6. 8. 16:01·개발/JAVA
728x90
반응형

 

1. 인터페이스 (Interface)

- 클래스가 객체의 설계도라면 인터페이스는 클래스의 설계도라 할 수 있다

- 멤버로는 추상메소드와 상수(final)만 구성된다

- 접근지정자는 public과 default만 가질 수 있다 (modifier(static, final)는 가질 수 없다)

- 인터페이스에 있는 추상 메소드는 public과 abstract란 키워드를 생략한다

ㄴ 자식의 오버라이딩 메소드에서는 반드시 public을 붙여야 한다

- 인터페이스의 변수 또한 public static final을 생략해도 컴파일러가 자동으로 붙여준다

public interface MyInterface{
	int MONEY=100; // public static final이 생략됨, 자동으로 컴파일러가 붙여줌
	void func(); // 추상메소드:public과 abstract를 생략해도 자동으로 붙는다.
}

 

- 클래스가 인터페이스를 상속 받을때는 implements란 키워드를 사용한다

class GeneralClass implements MyInterface {
	// 인터페이스를 상속받으면 반드시 
	// 추상메소드를 오버라이딩 해야 한다.
	public void func(){	}	
}

 

- 인터페이스로인해 다중상속이 가능하다 ,(콤마) 사용

class Generclass extends Generalclass2 implements MyInterface, Myinterface2 {
	//모든 추상 메소드 오버라이딩
}

 

- 인터페이스가 인터페이스를 상속받을 때는 extends 키워드 사용

interface MyInter3 extends MyInter1, MyInter2 {
	void func();
}

 

- 인터페이스도 타입 선언은 할 수 있으나 new로 객체 생성은 할 수 없다

반드시 그 인터페이스를 상속받은 자식 클래스 객체로 생성해야 한다


2. 컬렉션 (Collection)

- Collection인터페이스로 부터 구현된 클래스

- 데이타를 효율적으로 사용하기 위한 하나의 자료구조

- 객체(클래스)만 저장 할 수 있다.

- get()메서드 혹은 Iterator,Enumeration인터페이스의 메서드릉 이용해서 객체를 꺼내 올 수 있다.

- 메모리 기반의 작은 데이타 베이스 역할을 한다 (입력, 삭제, 검색 등)

 

* collection인터페이스의 주요 메서드

- int size() : 컬렉션에 저장된 객체의 개수 리턴

- boolean isEmpty() : 객체가 비었으면 true,아니면 false반환

- boolean add(Object obj) : 객체 추가.성공시 true

- boolean remove(Object obj) : 객체 삭제.성공시 true

- boolean removeAll(Collection col) : 저장된 객체 전체 삭제

- boolean contains(Object obj) : 해당 객체가 있으면 true.

- Iterator iterator() : Iterator인터페이스 반환

 

* collection의 계층 구조

- Collection

ㄴ Set : 데이터 저장시 중복을 허용하지 않고 순서없이 입력된다.

ㄴ HashSet

ㄴ List : 데이터 중복을 허용하고 순서있게 저장된다. 배열형태로 저장된다

ㄴ ArrayList, Vector

ㄴ Map : 키와 값의 쌍으로 저장되고 인덱스가 아닌 키값으로 검색해서 검색 속도가 빠르다

ㄴ HashMap, HashTable

* Iterator 인터페이스와 Enumeration 인터페이스의 주요 메소드

- Iterator

ㄴ boolean hasNext() : 저장된 객체가 있으면 true

ㄴ E next() : 객체를 얻어 낸다.

ㄴ remove() : 객체 삭제

Iterator element = 컬렉션객체.iterator();
while(element.hasNext()) {
   System.out.println(element.next());
}

 

- Enumeration

ㄴ boolean hasMoreElements() : 저장된 객체가 있으면 true

ㄴ E nextElement() : 객체를 얻어 낸다.

 

* 소스 예

- List 계열

// ArrayList<String> list = new ArrayList<String>();
Vector<String> list = new Vector<String>();
for(int i = 0;i< 10;i++) {
	list.add("List"+i);
}

System.out.println("저장된 객체 수" + list.size());

System.out.println("Iterator 이용");
Iterator it = list.iterator();
while(it.hasNext()) {
	System.out.println(it.next());
}
			
// 삭제
list.remove(1);
list.remove("List2");

System.out.println("for 이용");
for(int i=0;i<list.size();i++) {
	System.out.println(list.get(i));
}

// Enumeration이용 - ArrayList에는 없음
System.out.println("Enumeration이용");
Enumeration e = list.elements();
while(e.hasMoreElements()) {
	System.out.println(e.nextElement());
}

 


- Map 계열

Hashtable<String,Integer> list = new Hashtable<String,Integer>();
for(int i = 0;i< 10;i++) {
	list.put("List" + i, i);
}

System.out.println("저장된 객체 수"+list.size());

System.out.println("Iterator 이용");
String key, value;
Set<String> st = list.keySet();
Iterator<String> it = st.iterator();

while(it.hasNext()) {			
	// 키값 얻기
	key = it.next();
	value = String.valueOf(list.get(key));
	System.out.println("key값 : "+ key +" value값 : " + value);
}
		
// 삭제			
list.remove("List2");		

// Enumeration이용
System.out.println("Enumeration이용");
Enumeration e = list.keys();
while(e.hasMoreElements()) {
	key = (String)e.nextElement();
	value = String.valueOf(list.get(key));
	System.out.println("key값 : " + key + " value값 : " + value);
}

 

 

728x90
반응형
저작자표시 (새창열림)

'개발 > JAVA' 카테고리의 다른 글

19. JAVA 예외(Exception) / try~catch~finally  (0) 2020.06.08
18. JAVA 클래스간 형변환 / 업캐스팅 / 다운캐스팅 / 내부클래스 (InnerClass)  (0) 2020.06.08
16. JAVA 배열 (Array) / 헤테로지니어스 (Heterogeneous, 이질화)  (0) 2020.06.08
15. JAVA 패키지 / 패키지 배포  (0) 2020.06.08
14. JAVA 추상화 / 캡슐화 / 은닉화 / 생성자 / 싱글톤  (0) 2020.06.08
'개발/JAVA' 카테고리의 다른 글
  • 19. JAVA 예외(Exception) / try~catch~finally
  • 18. JAVA 클래스간 형변환 / 업캐스팅 / 다운캐스팅 / 내부클래스 (InnerClass)
  • 16. JAVA 배열 (Array) / 헤테로지니어스 (Heterogeneous, 이질화)
  • 15. JAVA 패키지 / 패키지 배포
joolog
joolog
  • joolog
    JOO
    joolog
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • 개발 (83)
        • JAVA (29)
        • PYTHON (9)
        • AWS (15)
        • DOCKER (2)
        • PERCONA (2)
        • ORACLE (14)
        • MYSQL (1)
        • 알고리즘 (0)
        • 기타 (11)
      • 툴 (5)
        • MARKDOWN (1)
        • GIT (1)
        • DOCKER (1)
        • PyCharm (2)
        • IntelliJ (0)
      • 일상 (35)
        • 맛집 (6)
        • 카페 (2)
        • 요리 (4)
        • 글씨 연습 (2)
        • 그저 일상 (7)
        • 내돈 내산 (11)
        • 홍보 (1)
      • 국내 여행 (1)
      • 해외 여행 (15)
        • 체코-오스트리아 (10)
        • 일본 (5)
      • 암 일지 (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
    • 티스토리 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오라클
    mysql
    Oracle
    글씨연습
    오블완
    성모샘쉼터
    오닉스 리프3
    재발
    저요오드식
    티스토리챌린지
    자바
    체코
    히로시마
    요양병원
    갑상선 암
    jdbc
    잘츠부르크
    동위원소
    오스트리아
    자바JDBC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
joolog
17. JAVA 인터페이스 (Interface) / 컬렉션 (Collection)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.