Skip to content

DAY240816

Simkm-98 edited this page Aug 19, 2024 · 1 revision

*15 컬렉션 자료구조 *15.1 컬렉션 프레임워크

  • 널리 알려진 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련 인터페이스와 클래스들을 포함시켜 놓은 java.util 패키지
  • 주요 인터페이스: List, Set, Map

image

*15.2 List 컬렉션

  • 객체를 인덱스로 관리하기 때문에 객체를 저장하면 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공
  • ArrayList
  • 객체를 추가하면 내부 배열에 객체가 저장되고 제한 없이 객체를 추가할 수 있음
  • 객체의 번지를 저장, 동일한 객체를 중복 저장 시 동일한 번지가 저장. null 저장 가능

image *15 컬렉션 자료구조 *15.1 컬렉션 프레임워크

  • 널리 알려진 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련 인터페이스와 클래스들을 포함시켜 놓은 java.util 패키지
  • 주요 인터페이스: List, Set, Map

image

*15.2 List 컬렉션

  • 객체를 인덱스로 관리하기 때문에 객체를 저장하면 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공
  • ArrayList
  • 객체를 추가하면 내부 배열에 객체가 저장되고 제한 없이 객체를 추가할 수 있음
  • 객체의 번지를 저장, 동일한 객체를 중복 저장 시 동일한 번지가 저장. null 저장 가능

image

  • ArrayList 컬렉션에 객체를 추가 시 인덱스 0번부터 차례대로 저장
  • 특정 인덱스의 객체를 제거하거나 삽입하면 전체가 앞/뒤로 1씩 당겨지거나 밀림
  • 빈번한 객체 삭제와 삽입이 일어나는 곳에선 바람직하지 않음

image

  • Vector
  • 동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Vector() 메소드를 실행할 수 없음
  • 멀티 스레드 환경에서는 안전하게 객체를 추가 또는 삭제할 수 있음

image

  • LinkedList
  • 인접 객체를 체인처럼 연결해서 관리. 객체 삭제와 삽입이 빈번한 곳에서 ArrayList보다 유리

image

*19.6 JOSN 데이터 형식

  • 네트워크로 전달하는 데이터 형식
  • 두 개 이상의 속성이 있으면 객체{ } 로 표기, 두 개 이상의 값이 있으면 배열[]로 표기

image

  • Set 컬렉션
  • 저장 순서가 유지되지 않음.
  • 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있음(수학의 집합 개념)

image

  • HashSet
  • 동등 객체를 중복 저장하지 않음
  • 다른 객체라도 hashCode() 메소드의 리턴값이 같고, equals() 메소드가 true를 리턴하면 동일한 객체라고 판단하고 중복 저장하지 않음

image

  • iterator() 메소드: 반복자를 얻어 Set 컬렉션의 객체를 하나씩 가져옴

image

*15.4 Map 컬렉션

  • 키와 값으로 구성된 엔트리 객체를 저장
  • 키는 중복 저장할 수 없지만 값은 중복 저장할 수 있음. 기존에 저장된 키와 동일한 키로 값을 저장하면 새로운 값으로 대치

image

  • HashMap
  • 키로 사용할 객체가 hashCode() 메소드의 리턴값이 같고 equals() 메소드가 true를 리턴할 경우 동일 키로 보고 중복 저장을 허용하지 않음

image

  • Hashtable
  • 동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Hashtable의 메소드들을 실행 불가
  • 멀티 스레드 환경에서도 안전하게 객체를 추가, 삭제할 수 있다.

image

  • Properties
  • Properties는 Hashtable의 자식 클래스. 키와 값을 String 타입으로 제한한 컬렉션
  • 주로 확장자가 .properties인 프로퍼티 파일을 읽을 때 사용
  • 프로퍼티 파일은 키와 값이 = 기호로 연결된 텍스트 파일(ISO 8859-1 문자셋, 한글은 \u+유니코드)
  • Properties 객체를 생성하고, load() 메소드로 프로퍼티 파일의 내용을 메모리로 로드

*19.7 TCP 채팅 프로그램

  • TCP 네트워킹을 이용해서 채팅 서버와 클라이언트를 구현
  • 채팅 서버:ChatServer는 채팅 서버 실행 클래스로 클라이언트의 연결 요청을 수락하고 통신용 SocketClient를 생성하는 역할
  • 채팅 클라이언트: 단일 클래스 ChatClient는 채팅 서버로 연결을 요청하고, 연결된 후에는 제일 먼저 대화명을 보내며 다음 서버와 메시지를 주고 받음.

image

  • ArrayList 컬렉션에 객체를 추가 시 인덱스 0번부터 차례대로 저장
  • 특정 인덱스의 객체를 제거하거나 삽입하면 전체가 앞/뒤로 1씩 당겨지거나 밀림
  • 빈번한 객체 삭제와 삽입이 일어나는 곳에선 바람직하지 않음

image

  • Vector
  • 동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Vector() 메소드를 실행할 수 없음
  • 멀티 스레드 환경에서는 안전하게 객체를 추가 또는 삭제할 수 있음

image

  • LinkedList
  • 인접 객체를 체인처럼 연결해서 관리. 객체 삭제와 삽입이 빈번한 곳에서 ArrayList보다 유리

image

*19.6 JOSN 데이터 형식

  • 네트워크로 전달하는 데이터 형식
  • 두 개 이상의 속성이 있으면 객체{ } 로 표기, 두 개 이상의 값이 있으면 배열[]로 표기

image

  • Set 컬렉션
  • 저장 순서가 유지되지 않음.
  • 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있음(수학의 집합 개념)

image

  • HashSet
  • 동등 객체를 중복 저장하지 않음
  • 다른 객체라도 hashCode() 메소드의 리턴값이 같고, equals() 메소드가 true를 리턴하면 동일한 객체라고 판단하고 중복 저장하지 않음

image

  • iterator() 메소드: 반복자를 얻어 Set 컬렉션의 객체를 하나씩 가져옴

image

*15.4 Map 컬렉션

  • 키와 값으로 구성된 엔트리 객체를 저장
  • 키는 중복 저장할 수 없지만 값은 중복 저장할 수 있음. 기존에 저장된 키와 동일한 키로 값을 저장하면 새로운 값으로 대치

image

  • HashMap
  • 키로 사용할 객체가 hashCode() 메소드의 리턴값이 같고 equals() 메소드가 true를 리턴할 경우 동일 키로 보고 중복 저장을 허용하지 않음

image

  • Hashtable
  • 동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Hashtable의 메소드들을 실행 불가
  • 멀티 스레드 환경에서도 안전하게 객체를 추가, 삭제할 수 있다.

image

  • Properties
  • Properties는 Hashtable의 자식 클래스. 키와 값을 String 타입으로 제한한 컬렉션
  • 주로 확장자가 .properties인 프로퍼티 파일을 읽을 때 사용
  • 프로퍼티 파일은 키와 값이 = 기호로 연결된 텍스트 파일(ISO 8859-1 문자셋, 한글은 \u+유니코드)
  • Properties 객체를 생성하고, load() 메소드로 프로퍼티 파일의 내용을 메모리로 로드

*19.7 TCP 채팅 프로그램

  • TCP 네트워킹을 이용해서 채팅 서버와 클라이언트를 구현
  • 채팅 서버:ChatServer는 채팅 서버 실행 클래스로 클라이언트의 연결 요청을 수락하고 통신용 SocketClient를 생성하는 역할
  • 채팅 클라이언트: 단일 클래스 ChatClient는 채팅 서버로 연결을 요청하고, 연결된 후에는 제일 먼저 대화명을 보내며 다음 서버와 메시지를 주고 받음.

image

Clone this wiki locally