일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 게시판만들기
- 프로그래머스 쿼리문
- 정보처리기사실기정리
- crud게시판
- PLSQL
- 오버라이딩
- 날짜지정팝업
- 2020정보처리기사실기요약
- Oracle기초
- jsp게시판만들기
- 정처기실기정리
- jsp 팝업띄우기
- 프로그래머스 MYSQL
- spring crud
- jsp 날짜팝업
- spring crud게시판
- 2020정보처리기사실기
- 자바배열예제
- 자바 정규표현식 예제
- 자바연산자
- 스프링게시판만들기
- js datepicker
- 2020정보처리기사실기정리
- 오라클설치
- html기초
- 프로그래머스 SQL
- 자바기초
- CRUD게시판만들기
- 스프링 crud
- 스프링 CRUD게시판
- Today
- Total
영보의 SystemOut.log
[Java] 자료구조 / 알고리즘 / java컬렉션 / java컬렉션 예제 본문
자바/스프링 기반 디지털 융합 웹 개발자 양성과정 2일차
자료구조(data structure)
- 기본 자료형을 근간으로 여러가지 구조를 만들 수 있는데 이러한 구조를 통칭하여 자료구조라 한다.
- 자료의 접근과 처리가 용이하도록 잘 조직화된 자료의 집단
- 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.
알고리즘(Algorithm)
- 어떤 문제를 해결하는 논리적인 절차를 알고리즘이라 한다.
- 복잡한 문제를 쉽고 효율적으로 해결하기 위해 정의된 방법과 절차
- 주어진 문제를 해결하기 위한 동작과 순서를 정의하는 것
- 중요 알고리즘
# 정렬 알고리즘
- 선택(selection)정렬 알고리즘
# 검색 알고리즘
- 순차(sequential) 검색 알고리즘
- 이분(binary) 검색 알고리즘
JAVA 컬렉션 개요
- 컴퓨터공학에서는 '자료구조' 분야가 있다. 자료구조는 많은 양의 데이터를 효율적으로 관리 (정렬, 검색, 추가, 수정, 삭제)하고자 데이터를 저장하는 방법이다.
- 자바는 여러 가지 자료구조 알고리즘을 API로 제공한다. 덕분에 우리는 복잡한 알고리즘을 몰라도 API를 사용해 자료구조를 구현할 수 있다. 이처럼 자료구조를 통해 데이터 그룹을 효율적으로 처리할 수 있도록 지원하는 자바 API들을 '자바 컬렉션 프레임워크'라고 한다.
- 여러 가지 자료구조 알고리즘을 미리 구현하여 데이터를 효율적으로 처리하는 자바 API다.
List | Set | Map |
- 순서를 유지하고 저장 - 중복 저장 가능 |
- 순서를 유지하지 않고 저장 - 중복 저장 안 됨 |
- 키와 값의 쌍으로 저장 - 키는 중복 저장 안 됨 |
컬렉션(collection) Framework
- 고정 크기의 배열이 가지는 단점을 극복하고 가변 개수의 객체들을 쉽게 삽입,삭제,검색을 할 수 있는 가변 크기 의 컨테이너이다.
- 따라서 컬렉션은 요소(element)라고 불리는 가변 개수의 객체들의 모임이다.
- 컬렉션은 요소들을 관리하는 자료구조로서 요소의 추가,삭제,검색 등의 기능을 제공한다.
# 배열과 컬렉션의 개념 차이
배열 | 컬렉션 |
- 고정 크기 이상의 객체를 관리할 수 없다 - 배열의 중간에 객체가 삭제되면 응용 프로그램에서 자리를 옮겨야 한다 |
- 가변 크기로서 객체의 개수를 염려할 필요 없다 - 컬렉션 내의 한 객체가 삭제되면 컬렉션이 자동으로 자리를 옮겨준다 |
컬렉션을 구현한 클래스들
- java.util 패키지는 컬렉션의 개념을 구현한 핵심적인 다양한 클래 스를 제공한다
# Vector
# ArrayList
# Hashtable
# HashMap
# LinkedList 등
[참고] 컬렉션을 구현한 모든 클래스들은 Object를 상속받는 객체들만 요소로 받아들인다. 즉 byte, char, short, int, long, float, double, boolean 등 8종류의 기본타입은 원칙적으로 사용할 수 없다
# 예제1 - VectorClassEx.java
package List계열의클래스들예제;
import java.util.*;
public class VectorClassEx {
public static void main(String[] args) {
String[] name = {"김진명","최인호","조정래","김홍신","박경리"};
// Vector 객체 생성
// List<E> list = new Vector<E>(); // 일반적인 경우
List<String> list = new Vector<String>(4,3);
//Vector 클래스의 주요 메소드 적용
System.out.println("벡터에 저장된 요소의 개수 : " +list.size()); // 0이 출력됨
System.out.println("벡터의 용량은 : "+((Vector<String>)list).capacity()); // 4
for(int i=0; i<name.length; i++) {
list.add(name[i]); // 객체 추가
}
System.out.println("벡터에 저장된 요소의 개수 : " +list.size()); // 5이 출력됨
System.out.println("벡터의 용량은 : "+((Vector<String>)list).capacity()); // 7
System.out.println(list);
//[김진명, 최인호, 조정래, 김홍신, 박경리]
list.add(2,"공지영");
System.out.println(list);
//[김진명, 최인호, 공지영, 조정래, 김홍신, 박경리]
/* 객체 검색 get() 메소드, contains(), size() */
System.out.println(list.get(1));
// 최인호
boolean contains_result = list.contains("김홍신");
System.out.println(contains_result); // true 출력
boolean contains_result2 = list.contains("홍길동");
System.out.println(contains_result2); // false 출력
System.out.println(list.size()); // 6
/* 객체 변경 set() 메소드 */
// "공지영" 객체를 "이문열" 객체로 변경하고자 한다.
list.set(2, "이문열");
System.out.println(list);
// [김진명, 최인호, 이문열, 조정래, 김홍신, 박경리]
/* 객체 삭제 remove() 메소드 */
list.remove(3);
System.out.println(list);
// [김진명, 최인호, 이문열, 김홍신, 박경리]
list.remove("김홍신");
System.out.println(list);
// [김진명, 최인호, 이문열, 박경리]
System.out.println(); // 개행
/* 객체 정렬 => 오름차순 */
System.out.println("[객체 오름 차순 정렬]");
Collections.sort(list);
System.out.println(list);
// [김진명, 박경리, 이문열, 최인호]
System.out.println(); // 개행
/* 객체 정렬 => 내림차순 */
System.out.println("[객체 내림 차순 정렬]");
Collections.sort(list, Collections.reverseOrder());
System.out.println(list);
// [최인호, 이문열, 박경리, 김진명]
}
}
# 예제2 - ArrayListClass.java
package List계열의클래스들예제;
import java.util.*;
public class ArrayListClassEx {
/*
* Vector, ArrayList 클래스는
* 모두 '동적' 배열(즉 가변 배열)클래스 이다.
* 고정 배열이 가지고 있는 문제점을 해결하기 위해서 만들어진 클래스들이다.
*
* <차이점>
* Vector는 동기화가 보장되지만, ArrayList는 동기화가 되지 않는다.
*
*/
public static void main(String[] args) {
// ArrayList 객체 생성
// List
List<Integer> list = new ArrayList<Integer>();
/* 객체 추가 */
list.add(new Integer(90)); // 정수 90을 객체화 시킴 ! list.add(90); 가능
list.add(new Integer(85));
list.add(new Integer(100));
list.add(new Integer(70));
list.add(new Integer(75));
System.out.println(list);
// [90, 85, 100, 70, 75]
list.add(2,60);
System.out.println(list);
// [90, 85, 60, 100, 70, 75]
/* 객체 변경 */
list.set(1, 70);
System.out.println(list);
// [90, 70, 60, 100, 70, 75]
/* 객체 삭제 */
list.remove(3);
System.out.println(list);
// [90, 70, 60, 70, 75]
}
}
Hashtable 클래스
- java.util 패키지에 포함되어 있다 Hashtable이 다루는 요소 객체는 항상 키(key)와 값(value)의 쌍으 로 구성되며 키를 특정 값에 매핑시키는 해시 테이블 기능을 제공 한다 키와 값은 모두 객체만 사용 가능하며 int, char 등과 같은 기본 데 이터 타입은 불가능하다
- Hashtable은 내부에 키와 값을 저장하는 자료구조를 각각 가지고 있으며 키를 입력으로 받는 해시 함수를 통해 내부 자료구조에서의 키와 값의 위치를 결정한다
Hashtable의 내부구성과 put(), get() 메소드
# 예제 - HashtableClassEx.java (Map 계열의 Class예제)
package Map계열의클래스예제;
import java.util.*;
public class HashtableClassEx {
public static void main(String[] args) {
String[] userID = {"Lee", "Kim", "Jang", "Wang", "Ha"};
String[] password = {"L123", "L456", "J234", "W896", "H567"};
// Hashtable 생성
Hashtable<String, String> ht = new Hashtable<String, String>(userID.length);
/* 객체 저장 */
for(int i=0; i<userID.length; i++) {
ht.put(userID[i], password[i]);
}
System.out.println(ht);
// {Jang=J234, Ha=H567, Lee=L123, Wang=W896, Kim=L456}
boolean FLAG = true; // 스위치 변수는 대문자로 주자!
while(FLAG) { //무한루프
System.out.println("유저 ID는 >>>> ");
Scanner in = new Scanner(System.in);
String user_key = in.nextLine();
String pw_value = ht.get(user_key);
if(pw_value != null) {
System.out.println("유저 PASSWORD는 >>>> ");
String passwordInputValue = in.nextLine();
if(pw_value.equals(passwordInputValue)) {
System.out.println("인증 성공!!");
} else {
System.out.println("인증 실패!!");
}
}else {
System.out.println("입력한 유저 ID는 등록되어 있지 않습니다.!!");
}
}
}
}
'국비교육(아이티센 입사교육) > Java' 카테고리의 다른 글
[Java] 자바 로또 프로그램 만들기 ( HashSet, Treeset) (0) | 2021.09.28 |
---|---|
[Java] Java 컬렉션 개요와 종류 / 예제 (0) | 2021.09.28 |
[Java] 주민번호 정상체크 / 나이 / 성별 / 출신지역 / 띠 / 생년월일 추출 프로그램 만들기 (0) | 2021.09.28 |
[Java] Java / 데이터 타입 / 변수 종류 / 연산자의 종류 / 기본 API 클래스 or 인터페이스 / String 클래스의 사용 빈도수가 높은 메소드 (0) | 2021.09.27 |
[Java] lastIndexOf 와 substring 문자열 자르기 (0) | 2021.09.27 |