Backend/Java (16) 썸네일형 리스트형 이진 탐색 트리 활용 상품 관리 프로그램 메뉴 -> 원하는 기능 선택 이진 탐색 트리 활용 기능 (1) 상품 등록 : 상품 번호와 상품명 입력하여 등록 (2) 상품 삭제 : 상품 번호 입력하여 그에 대응하는 상품 삭제 (3) 상품 검색 : 상품 번호 입력하여 그에 대응하는 상품명 출력 -> '상품 삭제 완료' 출력 (4) 전체 상품 조회 : 등록된 상품이 없을 경우 '등록된 상품이 없습니다.' 출력 / 있을 경우 '상품번호 상품명' 출력 (5) 종료 : '종료합니다.' 출력 후 프로그램 종료 구현 시 고려해야 할 이진 탐색 트리의 특징 컴퓨터의 탐색 = 레코드(Record)의 집합에서 특정한 레코드를 찾아내는 작업 레코드 : 하나 이상의 필드(Field)로 구성 레코드를 서로 구별하려면? 필드들 중에서 서로 중복되지 않는 고유한 값을 가지는 필.. Collections 클래스 Collections 클래스 java.util. 패키지에 포함된 클래스 컬렉션을 다루는 유용한 메소드 지원 Collections 클래스의 메소드 sort() : 정렬 reverse() : 반대로 정렬 max() / min() : 최대값 / 최소값 binarySearch() : 검색 Collections 예제 package map; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class CollectionsEx { public static void main(String[] args) { List myList = new ArrayList(); myL.. Map Map 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합 키와 값은 모두 객체 키는 중복될 수 없지만 값은 중복 저장 가능 기존에 저장된 데이터와 중복된 키 값을 저장하면, 새로운 값이 기존의 값을 덮어써 마지막에 저장된 값이 남음 구현 클래스 : HashMap, Hashtable, LinkedHahsMap, Prpperties, TreeMap 일반적으로 키 타입은 String 사용 HashMap의 생성 : key 타입과 value 타입을 매개변수로 주고 기본 생성자 호출 Map map = new HashMap(); HashMap 예제 - 1 package map; import java.util.HashMap; import java.util.Map; public class HashMapEx .. Iterator Iterator java.util 패키지의 Iterator 인터페이스 컬렉션 프레임워크에서 컬렉션에 저장된 요소들을 읽어 오는 방법을 표준화한 것 요소가 순서대로 저장된 컬렉션에서 요소를 순차적으로 검색할 때 사용 Iterator iterator = set.iterator(); while(iterator.hasNext()) { // 들어 있는 객체 수만큼 반복 System.out.println(iterator.next()); } Set Set - HashSet 수학의 집합에 비유 저장 순서가 유지되지 않음 객체 중복 저장 불가 구현 클래스 : HashSet, LinkedHashSet, TreeSet 전체 객체를 대상으로 한 번씩 반복해 가져오는 반복자(Iterator) 제공 인덱스로 객체를 검색해서 가져오는 메소드 (get()) 없음 HashSet 예제 - 1 package set; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class HashSetEx { public static void main(String[] args) { Set set = new HashSet(); // 중복된 값은 한 번만 저장됨 set.add("Java").. this this 클래스 내에서 객체 자신을 가리키는 레퍼런스 컴파일러에 의해 자동 생성 (사용자가 별도로 선언하지 않음) this의 사용 전달 받은 매개변수 값으로 멤버 변수의 값을 설정할 때, 매개변수 이름과 멤버 변수명을 구별하기 하기 위해 사용 객체 자신의 레퍼런스 반환하는 경우 package list; public class Board { // 멤버변수 String subject; String content; String writer; // 객체 생성 시 자동으로 생성자가 호출되면서 // 전달되는 값들을 매개변수가 받음 public Board(String subject, String content, String writer) { super(); this.subject = subject; this.cont.. ArrayList와 LinkedList와 처리 시간 비교 순차적으로 추가/삭제 시 ArrayList가 LinkedList 보다 빠름 ArrayList가 용량이 충분하면 더 빠름 ArrayList 용량이 충분하지 않으면 새로운 크기의 ArrayList를 생성하고 데이터를 복사하는 과정 발생 -> 순차적으로 데이터를 추가해도 ArrayList가 더 느릴 수 있음 -> 충분한 용량 확보 중요 순차적으로 삭제 시 마지막 데이터부터 역순으로 삭제해 나가면 각 요소들을 재배치할 필요가 없기 때문에 더 빠름 중간 데이터를 추가/삭제 시 LinkedList는 연렬(링크)만 변경해주면 됨 -> 처리 속도 상당히 빠름 ArrayList는 삭제 후 각 요소들을 재배치 -> 처리 속도 늦음 예제를 통해 확인 가능 package list; import java.util.ArrayLi.. LinkedList LinkedList List 구현 클래스 -> ArrayList와 사용 방법 동일하나 내부 구조는 다름 ArrayList : 배열로 만들어져 있어서 인덱스 사용 LinkedList : 인접 참조를 링크해서 체인처럼 관리 (이전/다음 객체의 주소 갖고 있음) 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞뒤 링크만 변경 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 성능 좋음 ArrayList에 DTO 객체 저장 db5 복사해서 다음과 같이 변경 DAO 클래스의 selectStudent() 메서드에서 한 행씩 출력 → 모든 행을 ArrayList에 담아서 StudentSelect 클래스의 select() 메서드에게 반환 select() 메서드에서 출력 db6 모든 클래스 복사해서 수정 DAO 클래스의 selectStudent() 메서드의 반환형을 ArrayList 변경 StudentSelect 클래스의 select() StudentDTO 클래스에 toString() 추가 : StringBuilder 사용 이전 1 2 다음