/ Map / Generic / Autoboxi ng / Unboxing [ Java ] 자료구조 JCF / List / Set

▣ JCF (Java Collections Fr amework) – 자료구조 : 데이터를 상황에 따라 편하게 처리(동적 할당)하기 위해 제공하는 객체. – Collection (List, Set) 계열, Map(Map) 계열로 구분 – JDK

● Generic : 입력되는 데이터형의 형태 제한, JDK 1.5부터 추가 – 자료 구조에서 여러 데이터형에 사용 가능한 경우 외부에서 사용자가 임의로 지정하는 것 – 클래스 내부가 아닌 외부에서 필요에 따라 데이터형 지정 ⇒ 관리가 용이하며 코드 재사용성 향상

문법) <데이터형>:선언된 데이터형에서만 추가 가능 참조형 데이터형만 사용 가능.기본형 데이터형을 사용할 수는 없다.⇒ Wrapper class ( Integer , Long , Boolean … ) 使用

< E > : Element : Type < K > : Key < V > : Value

● Autoboxing-JDK1.5부터 추가-JCF에 기본형 데이터형 값을 추가할 때 동작-기본형 데이터형을 자동적으로 Wrapper Class로 둘러싸서 입력할 것 (기본형→객체) 예)Integer형 변수에 int형 데이터가 들어올 경우 자동으로 integer형 데이터를 Integer

JDK 1.8 까지는 래퍼 Class의 생성자를 사용하여 값을 넣는다⇒ list.add(10); // list.add(new Integer(10)); (객체)

JDK 1 . 9 에서 부터는 static method 사용 ⇒ list . add ( 10 ) ; // list . add ( Integer . intValue ( 10 )) ;

● Unboxing-JDK1.5 에서 추가 – JCF 에서 입력된 기본형 데이터형을 얻을 때 동작 – Wrapper Class 에서 입력된 데이터형을 기본형으로 풀어서 빼내기 (객체→기본형) integer형 변수에 Integer형 데이터가 들어온 경우 자동으로 Integer형 데이터를

int i = list . get ( 0 ) ; // int i = (( Integer ) list . get ( 0 )) . intValue ( ) ; ⇒ 整数 型 結果 、 Unboxing

■ List-일차원 배열 구조를 갖는다.- 가변길이형(개발자가 발생하는 데이터의 개수를 몰라도 됨)⇒ 값을 추가하면 방의 길이가 길어지고, 값을 삭제하면 방의 길이가 짧아진다.★ 검색기능이 있어 중복데이터를 저장할 수 있다.모든 데이터를 저장할 수 있다.

● List 사용 – 자녀 : 부모의 모든 method, 자녀의 모든 method 모두 사용 가능 ArrayList <E> al = new ArrayList <E>(); ArrayList <E> al = new ArrayList() 에서 가능 ArrayList(); ⇒ Gen7에서 가능 al = new ArrayList();

  • 부모 : isa 관계의 객체화, 부모의 모든 method 사용 가능, 자녀의 method 사용 불가 List <E> list= new Array List <E>(); List <E> list= new Array List();⇒JDK1.7 생성 가능

● List 사용법 1 . 생성 List < String > list = new ArrayList < String > ( ) ;

2. 값 추가 list.add(Eo); // element(generic으로 변경), objectlist.add(“오늘은”); list.add(“월요일”); list.add(“입니다”); list.add (“월요일”); // 중복값 저장가능

3. 방의 수 list.size(); // 반환형 int

4. 값을 얻기//검색 기능-인덱스 사용:Generic 으로 설정한 데이터형 반환 list.get(0);-객체 사용: 동일한 객체가 있을 경우에만 값을 얻는다.list.get (“오늘은”);

5. 명단이 비어 있나?list . isEmpty ( ) ; // trye or false

6. 목록 방의 값을 삭제 – 삭제하면 방의 크기가 작아진다. 삭제된 후 방의 index 변경 – 모든 방의 값 삭제 list.clear(); – 특정 방의 값 삭제 list.remove(0); // 인덱스 삭제 list.remove(“오늘은”); // 오브젝트(내용) 삭제 // 중복 데이터가 존재하면 맨 첫 번째 방 값만 삭제 list.remove(“); “

  • 일괄처리 for (int i= 0; i <list.size(); i++); list.get(i); // 첫방부터 끝방까지 모든 방 값 얻기}
  • * List의 내용을 배열에 복사 ※ Generic이 사용되었을 경우에만 복사가능 1) List의 크기대로 배열 생성 데이터형 [ ] 배열명= new데이터형 [ list.size ( ) ]; 2) List의 내용을 배열에 복사 list. to Array (배열명);
  • 상속도 ↘

ArrayList vs.Vector의 차이공통점 ArrayList – MultiThread로 동시 접근 가능 – 동기화 X – 상대적으로 속도가 빠름 – 데이터 크기를 알 수 없으며 순서대로 데이터 추가 시 사용 – Thedist 간 데이터 추가 시 사용 – 간에 데이터 추가는 가능함

▶ 실습 – Array List ▶ 실행결과 Array List 크기 : 0list 크기 : 0 Array List 크기 : 2 Array List 크기 : 4 [10, 20, 30, 10] list 크기 : 5, [Java, Oracle, JDBC, XML, JSON] [Java Java] [101010] [Java] [10] [10] [10] [1010, Oracle Oracle] Array Oracle X X X X MLa ] [Java ] [Java ] [Java ] [ fal setrueal이 비어있는가? true list 비어있는지 true————- 배열에 복사한 내용———————————————————————————————————————————————————–

● Linked List – 가변길이형 – 발생한 데이터를 기존 데이터 간에 추가할 때 (insert) – 시작 주소와 끝 주소 존재

▶ 실습 – LinkedList ▶ 실행 결과 3 / [ Java , Oracle , JDBC ] 4 / [ Java , JSP , XML , JSON ] 6 / [ Java , Oracle , JDBC , JSP , XML , JSON ] 5 / [ Java , Oracle , JDBC , JSP , JSON ] JavaOracleJDBCJSPJSON

● Stack

  • LIFO : Last Input First Out put / 후입 선출 – 동기화 O-isa 관계 오브젝트화 안 함 – 상태 저장시 자주 사용 – Ctrl, Y 웹 기록물 방문하기 + Z (실행 취소), Ctrl + Y (실행 취소)
  • – 사용법) 1. 생성 Stack <E> sta = newStack <E> ( );
  • 2. 값 추가(Stack이 관리하는 값: item) sta.push(값); sta.push(“A”); sta.push(“B”); sta.push(“C”); sta.push(“D”);
  • 3. Stack이 비어있는가? 아이템이 없는가?- 비어있을 때 (item이 없을 때) : true – 채워져있을 때 (itml이 존재할 때) : falsesta.empty();
  • 4. Stack값을 얻는다 – Stack에 item이 존재할때 pop가능 – 값을 꺼내면 Stack에서 사라진다.sta.pop();//맨 위 값에서 나오는
  • 5. 모든 방의 값(item)을 얻는 while (!sta.empty() {sta.pap();}
  • ▶ 실습 – Stack ▶ 실행결과 [1. Java, 2. Oracle, 3. JDBC, 4. Java EE] 스택이 비어있는가? : false 4. Java EE 3. JDBC 2. Oracle 1. Java 스택이 비어있는가? : true
  • Generic을 사용하지 않을 때 1. 생성 : <E> 사용 X – 모든 객체를 저장할 수 있다.List l = new ArrayList ( ) ;
  • 2. 값 추가 : Generic을 사용하지 않을 경우 모든 값을 추가할 수 있다.l.add(10);l.add(20);l.add(30);//l.add (new Integer(30)); l.add(“오늘은 월요일”);// 이후에 계속 추가 가능
  • 3. 크기 (방의 개수) l. size();
  • 4. 값을 얻는다get (0) // 0 g g 10for (int i = 0; i < l.size; i++) { // 전체 방값을 구하는 l.get ( i );}
  • ▶ 실습 – Generic을 사용하지 않았을 때 ▶ 실행결과 04

■ Set- 일차원 배열 구조를 가진다.- 가변길이형 – ★ 검색기능이 없어 중복데이터를 저장할 수 없다.모든 데이터를 저장할 수 있다.값은 순차 입력되지 않는다.- 상속도 ↘

● Set 사용법 1 . 생성 HashSe t < E > hs = new HashSet < E > ( ) ; Set < E > s = new HashSet < E > ( ) ; // is a 관계일 경우

2. 값 추가 – 입력되는 값은 순차적으로 들어가지 않는다.중복값은 입력할 수 없다.set . add ( 값 ) ;

3. 방의 개수(크기) set. size();

4. 값 제거 – index에서는 값 제거 불가 set.remove (Objcet); – 모든 방의 값 제거 set.clear();

5. 값을 얻기 – 검색이 불가능하고 set method로는 값을 얻는 것이 불가능 – java.util.Iterator 사용 – Iterator : 입력되는 대상의 제어권을 얻어 값을 얻기(빼내기) 일을 하는 오브젝트 – iterator < E>ita =

▶실습 – Set ▶ 실행결과 4 / [타룰라, 지지고, 지지고] 타룰라 지지고

■ Map

  • 다차원 배열 구조를 갖는다. ⇒ 배열보다 편하고 많이 사용할 것 – 가변길이형 (열은 2열, 행이 증가한다) ⇒ 키와 값의 쌍 – 키를 사용하여 값을 검색하여 얻을 때 사용 – 키는 중복될 수 없고 값은 중복될 수 있다.모든 데이터를 저장할 수 있다.전체 크기의 행으로 약 75% 의 데이터가 채워져 있는 경우 검색 속도가 빠른 값은 순차 입력되지 않는다.- 상속도 ↘

Hashtable HashMap 동기화 O(속도 느림) 동기화 X(속도 빠름) 기본 생성자로 생성 시 11줄 생성 기본 생성자로 생성 시 16줄 생성

● Map 사용법 1 . 생성 Map < K , V > map = new HashMap < K , V > ( ) ; map < String , String > map = new HashMap < String , String > ( ) ;

2. 값을 넣는다 – 값이 순차적으로 입력되지 않는다.map.put(키, 값); map.put(“Java”, “완벽한 OOP 언어”); map.put(“Oracle”, “대용량 데이터베이스”); map.put(“HTML”, “웹의 구조”);

3. 줄 크기(수) map. size();

4. 값을 얻다-키의 값을 얻다-없는 키의 경우 nullmap.get(키);

키가 존재하는가? map.contains Key( ));

6. 값 삭제 – 레코드(한 줄) 삭제 map.remove(키); – 모든 레코드 삭제 map.claer();

7. 모든 키에 대한 값을 얻는 Set <E>set=map.keySet(); // Set: 중복불가 // 모든 키 Iterator<E> ita = set.ita ( ); // 제어권 부여 while(ita.has Next()가 ()인 ita ()의 존재 //////n.has Next() {?

▶ 실습 – Map▶ 실행결과 {A= 미세한 ^o^ b, AB▶ 바보가 아니면 천재, B= 터프하다 — +, O= 우유부단 ~ (^^~)(~^^)~}B형의 특징은 터프하다 –+

Set / List / Map 정리

error: Content is protected !!