수학에서의 Set은 집합을 의미하는데 집합은 일반적으로 중복을 허용하지 않는다. 자바 컬렉션에서의 Set은 수학에서의 집합과 유사하다. Set 중복을 허용하지 않는다 저장 순서를 유지하지 않는다 Set 인터페이스에 정의된 메서드들은 다음과 같습니다. 기능 리턴 타입 메서드 설명 객체 추가 boolean add(Object o) 주어진 객체를 추가하고, 성공하면 true를, 중복 객체면 false를 반환합니다. 객체 검색 boolean contains(Object o) 주어진 객체가 Set에 존재하는지 확인합니다. boolean isEmpty() Set이 비어있는지 확인합니다. Iterator Iterator() 저장된 객체를 하나씩 읽어오는 반복자를 리턴합니다. int size() 저장되어 있는 전체 객..
Iterator Collection에 저장된 요소들을 순차적으로 읽어오는 역할 (List, Set) 메서드 설명 hasNext() 읽어올 객체가 남아 있으면 true를 리턴하고, 없으면 false를 리턴합니다. next() 컬렉션에서 하나의 객체를 읽어옵니다. 이 때, next()를 호출하기 전에 hasNext()를 통해 읽어올 다음 요소가 있는지 먼저 확인해야 합니다. remove() next()를 통해 읽어온 객체를 삭제합니다. next()를 호출한 다음에 remove()를 호출해야 합니다. List에서 String 객체 반복 ArrayList list = ...; Iterator iterator = list.iterator(); while(iterator.hasNext()) { // 읽어올 다음 객..
List 배열과 같이 객체를 일렬로 늘어놓은 구조를 가지고 있음 객체를 저장하면 자동으로 인덱스가 부여됨 인덱스로 객체를 검색, 추가, 삭제할 수 있음 ArrayList 객체가 인덱스로 관리된다 저장 용량 초과 시, 자동으로 늘어남 (기본적으로 10이 지정됨) 데이터가 연속적으로 존재 (순서 유지) 특정 인덱스 객체 제거 시, 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨짐 ArrayList 객체명 = new ArrayList(초기 저장 용량); ArrayList container1 = new ArrayList(); // String 타입의 객체를 저장하는 ArrayList 생성 // 초기 용량이 인자로 전달되지 않으면 기본적으로 10으로 지정됨 ArrayList container2 = n..
특정 자료 구조에 데이터를 추가하고, 삭제하고, 수정하고, 검색하는 등의 동작을 수행하는 편리한 메서드들의 집합 List 데이터의 순서가 유지됨 중복 저장 가능 Set 데이터의 순서가 유지되지 않으며, 중복 저장이 불가능 Map 키(key)와 값(value)의 쌍으로 데이터를 저장 데이터의 순서가 유지되지 않음 키는 값의 구별을 위해 중복 저장 불가 값은 중복 저장 가능 Collection 인터페이스 List + Set 기능 리턴 타입 메소드 설명 객체 추가 boolean add(Object o) / addAll(Collection c) 주어진 객체 및 컬렉션의 객체들을 컬렉션에 추가합니다. 객체 검색 boolean contains(Object o) / containsAll(Collection c) 주어..
프로그램의 비정상적인 종료를 방지하고, 정상적인 실행 상태를 유지하기 위하여 수행 컴파일 에러 컴파일할 때 발생하는 에러 주로 세미콜론 생략, 오탈자, 잘못된 자료형, 잘못된 포맷 등 문법적인 문제를 가리키는 신택스(syntax) 오류로부터 발생한다 아래 코드는 for문을 닫는 괄호가 없다 public class ErrorTest { public static void main(String[] args) { int i; for (i= 1; i
타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것 작성한 클래스 또는 메서드의 코드가 특정 데이터 타입에 얽매이지 않게 해 둘 때 사용한다. 제네릭 클래스 하나의 클래스로 모든 타입의 데이터를 저장할 수 있는 인스턴스를 만들 수 있다 제네릭 클래스 생성 * static은 사용불가하니 참고 class Basket { // 제네릭 미사용시 타입별로 모두 만들어야 한다 (String, Integer, ...) private String item; Basket(String item) { this.item = item; } public String getItem() { return item; } public void setItem(String item) { this.item = i..
서로 연관된 상수들의 집합 여러 상수들을 보다 편리하게 선언하고 관리할 수 있게 하며, 상수 명의 중복을 피하고, 타입에 대한 안정성을 보장 변경되지 않는 한정적인 데이터들을 효과적으로 관리할 수 있다 관례적으로 상수명은 대문자로 작성 switch문 사용가능 기본 구조 enum 열거형이름 {상수명1, 상수명2, 상수명3, ...} switch public class Main { public static void main(String[] args) { switch (Seasons.SPRING) { case SPRING: System.out.println("봄입니다"); break; case SUMMER: System.out.println("여름입니다"); break; case FALL: System.out..
기존 클래스들의 공통적인 요소들을 뽑아 상위 클래스를 만들어 내는 것 abstract 제어자 주로 클래스와 메서드를 형용하는 키워드 클래스 앞에 붙은 경우 : 추상 클래스 메서드 앞에 붙은 경우 : 추상 메서드 어떤 클래스에 추상 메서드가 포함되어있는 경우 해당 클래스는 자동으로 추상 클래스가 된다 미완성이라는 의미 객체 생성이 불가 abstract class AbstractExample { // 추상 메서드가 최소 하나 이상 포함돼있는 추상 클래스 abstract void start(); // 메서드 바디가 없는 추상메서드 } AbstractExample abstractExample = new AbstractExample(); // 에러발생. 추상 클래스 메서드 시그니처만 존재하고 바디가 선언되지 않은..
하나의 객체가 여러 가지 형태를 가질 수 있는 성질 다형성 상위 클래스 타입의 참조변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 허용한 것 class Friend { public void friendInfo() { System.out.println("나는 당신의 친구입니다."); } } class BoyFriend extends Friend { public void friendInfo() { System.out.println("나는 당신의 남자친구입니다."); } } class GirlFriend extends Friend { public void friendInfo() { System.out.println("나는 당신의 여자친구입니다."); } } public class FriendTest { ..