22일차 강의 정리


1. 큐(Queue)

선입선출(FIFO: First in First out) - interface

2. 스택(Stack)

후입선출(LIFO: Last in First out) - class


소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public static void main(String[] args) {
        Queue que = new LinkedList();
        que.offer("첫째");    //마지막 요소로 추가
        que.offer("둘째");
        que.offer("셋째");
        que.offer("넷째");
        
        while(que.isEmpty()==false){
            System.out.println(que.poll());    //첫번째 값 꺼내오기
//            System.out.println(que.peek());    //꺼내지 않고 확인만
        }
        System.out.println("-------------------------------");
 
        Stack st =  new Stack();
        st.push("하나");
        st.push("두울");
        st.push("세엣");
        st.push("네엣");
        
        while(st.isEmpty()==false){
            System.out.println(st.pop());    //마지막부터 꺼내오기
//            System.out.println(st.peek());    //꺼내지 않고 확인만
        }
    }
cs

결과



22일차 강의 정리


1. Map

Map은 값을 배열형식으로 인덱스와 값이 들어가는 것이 아니라,

key값과 value값을 지정하여 put하는 것이다.

대표적으로 HashMap을 사용한 소스이다.

소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public static void main(String[] args) {
        HashMap map = new HashMap();
        
        map.put("aa",123);
        map.put("bb",456);
        map.put("cc",789);
        map.put("dd",000);
        map.put("aa",12344);
        
        map.remove("dd");        //"dd"키의 값 삭제
        
        Set key = map.keySet();        //key 값 가져오기
        Iterator ite= key.iterator();
        while(ite.hasNext()){
            System.out.println(map.get((String)ite.next()));
        }
    }//main end
cs

결과

소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Ex02 {
 
    public static void main(String[] args) {
        //Map use
        ArrayList list = new ArrayList();
        HashMap map = new HashMap();
        map.put("kor"90);
        map.put("eng"80);
        map.put("math"70);
        list.add(map);
        
        for (int i = 0; i < list.size(); i++) {
            HashMap map2 = (HashMap)list.get(i);
            System.out.println(map2.get("kor")+""+map2.get("math"));
        }
    }
 
}
cs

결과


* 지금까지의 컬렉션 프레임워크는 제네릭이 제외되어 경고 (!)가 표기되어있다..

다음 강의에서 제네릭이 포함된 컬렉션프레임워크를 다룰예정이다.

'* Programming > JAVA' 카테고리의 다른 글

DAY23 제네릭1  (0) 2016.08.08
DAY22 큐&스택  (0) 2016.08.04
DAY22 컬렉션프레임워크 Set  (0) 2016.08.03
DAY22 컬렉션프레임워크 ArrayList&LinkedList  (0) 2016.08.03
DAY22 컬렉션프레임워크 Vector  (0) 2016.08.03

22일차 강의 정리


set type은 중복이 불가능하다.

우선 해시값을 비교해서 중복이 아님을 확인해 제외시킨다. 

그러나 해시값이 같을 경우 equals검사 수행해서 중복을 확인한다.

1. HashSet

소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public static void main(String[] args) {
        HashSet set = new HashSet();
        set.add("하나");
        set.add("둘");
        set.add("셋");
        set.add("넷");
        set.add(new String("넷"));        //중복x
        
        HashSet set2 = new HashSet(set);    //set을 set2에 모두 복사
        HashSet set3 = (HashSet)set2.clone();    //복사,그러나 clone이 받아오는 타입을몰라서 (HachSet)로 캐스팅
        
        Iterator ite = set3.iterator();
        while(ite.hasNext()){
            System.out.println(ite.next());
//            ite.remove();    //삭제
        }
        System.out.println("------------------------------");
        System.out.println("size: "+set3.size());
        System.out.println("\'하나\'란 값이 있는가? "+set3.contains("하나"));
        System.out.println("하나".equals(new String("하나")));    //==는 비교불가
        System.out.println(new String("하나").hashCode());
        System.out.println("하나".hashCode());
    }//main end
cs

결과

소스

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
32
33
class Pm05{
    int idx;
    
    Pm05(int idx){
        this.idx=idx;
    }
    
    public boolean equals(Object obj){
        return idx==((Pm05)obj).idx;
    }
    
    public int hashCode(){
        return 1000;
    }
}
 
public class Ex05 {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        Pm05 pm1 = new Pm05(1);
        Pm05 pm2 = new Pm05(2);
        Pm05 pm3 = new Pm05(1);
        set.add(pm1);
        set.add(pm2);
        set.add(pm3);
        
        Iterator ite = set.iterator();
        while(ite.hasNext()){
            System.out.println(ite.next());
        }
        System.out.println("size: "+set.size());
    }//main end
}//class end
cs

중복되는것을 확인해서 제외시켜서 size가 2이다.

결과

응용소스

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
32
33
34
35
36
class Ball{
        int num;
        
        Ball(int num){
            this.num=num;
        }
        @Override
        public boolean equals(Object obj){
            return num==((Ball)obj).num;
        }
        @Override
        public int hashCode(){
            return num;
        }
    }
 
public class Ex06 {
    public static void main(String[] args) {
        //lotto
        HashSet set = new HashSet();
        int cnt = 0;
        while(set.size()<7){
            cnt++;
            Random ran = new Random();
            int random = ran.nextInt(45)+1;
            set.add(new Ball(random));
        }
        System.out.println(cnt-6+"번 중복");
        Iterator ite = set.iterator();
        while(ite.hasNext()){
            Ball ball = (Ball)ite.next();
            System.out.print(ball.num+" ");
        }
        
    }//main end
}//class end
cs

결과1                                결과2


2. TreeSet

TreeSet은 위의 HashSet과 달리 Tree형식으로 순서가 존재한다.

그래서 순서를 정할수 없는 상황(ex. 문자와 숫자가 혼용)이 된다면 오류가 발생한다.

소스

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
32
33
34
35
36
37
38
class Pm07 implements Comparable{
    int idx;
    Pm07(int idx){
        this.idx=idx;
    }
    @Override    // 트리구조의 정렬 
    public int compareTo(Object o) {
        if(idx==((Pm07)o).idx){
            return 0;
        }
        if(idx<((Pm07)o).idx){
            return -1;
        }
        return 1;
    }
}
 
public class Ex07 {
 
    public static void main(String[] args) {
        TreeSet set = new TreeSet();
        set.add(new Pm07(1));
        set.add(new Pm07(50));
        set.add(new Pm07(5));
        set.add(new Pm07(25));
        
        Iterator ite = set.iterator();
        while(ite.hasNext()){
            System.out.println(((Pm07)ite.next()).idx);
        }
        System.out.println("----------------------");
//        System.out.println(set.first());
//        System.out.println(set.last());
//        System.out.println(set.lower(new Integer(10)));
//        System.out.println(set.higher(10));
    }
 
}
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY22 큐&스택  (0) 2016.08.04
DAY22 컬렉션프레임워크 Map  (0) 2016.08.03
DAY22 컬렉션프레임워크 ArrayList&LinkedList  (0) 2016.08.03
DAY22 컬렉션프레임워크 Vector  (0) 2016.08.03
DAY21 컬렉션 프레임워크  (0) 2016.08.03

22일차 강의 정리


1. ArrayList

소스

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    public static void main(String[] args) {
        //ArrayList
        //crud
        ArrayList list;
        list = new ArrayList();
        
        list.add(1);
        list.add(2);
        list.add(3);
        
        System.out.println("---------출력1---------");
        for (int i = 0; i < list.size(); i++) {
            System.out.println("list["+i+"]="+list.get(i));
        }
//        System.out.println("---------출력2---------");
//        Iterator ite = list.iterator();
//        int idx=0;
//        while(ite.hasNext()){
//            System.out.println("list["+(idx++)+"]="+ite.next());
//        }
        ArrayList list2 = (ArrayList) list.clone();    //clone -> return타입이 Object
        
        list2.set(1"이");
        list2.addAll(list);    //뒤에 list 모두 추가
        
        System.out.println("---------출력3---------");
        System.out.println("\"이\"가 있는가?"+list2.contains("이"));    //true/false 출력
        System.out.println("3의 인덱스번호: "+list2.indexOf(3));        //값이없으면 -1 출력,인덱스번호출력
        
        for (int i = 0; i < list2.size(); i++) {
            System.out.println("list2["+i+"]="+list2.get(i));
        }
        
        System.out.println("값\'3\'의 인덱스번호 : "+list2.lastIndexOf(3));    //"3"이 들어있는 인덱스번호 출력
        
//        list2.clear();
        System.out.println("list2 가 비어있는가? "+list2.isEmpty());
//        list2.remove(1);        //인덱스1의 값 삭제
//        list2.remove(new Integer(3));    //값이 3 을 삭제
//        list2.removeAll(list);    //전부삭제
        
        System.out.println("======================================");
        Object[] obj = list2.toArray();
        for (int i = 0; i < list2.size(); i++) {
            System.out.println("list2["+i+"]="+list2.get(i));
        }
//        System.out.println("---------출력4---------");
//        for (int i = 0; i < obj.length; i++) {
//            System.out.println(obj[i]);
//        }
        System.out.println("---------출력5---------");
        ArrayList list3 = new ArrayList(list2);
        for (int i = 0; i < list3.size(); i++) {
            System.out.print("list3["+i+"]="+list3.get(i)+" / ");
        }
        list3.clear();
        
    }//main end
cs

결과


2. LinkedList

소스

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
    public static void main(String[] args) {
        //LinkedList
        LinkedList list;
        list = new LinkedList();
        
        list.add(1);
        list.add(2);
        list.add(3);
        
        System.out.println(list.get(1));
        System.out.println("-------------------------1---");
        for(int i=0; i<list.size(); i++){
            System.out.println("list["+i+"]="+list.get(i));
        }
        System.out.println("-------------------------2---");
        Iterator ite = list.iterator();
        int idx =0;
        while(ite.hasNext()){
            System.out.println("list["+(idx++)+"]="+ite.next());
        }
        System.out.println("-------------------------3---");
        LinkedList list2 = new LinkedList(list);
        for(int i=0; i<list2.size(); i++){
            System.out.println("list2["+i+"]="+list2.get(i));
        }
        System.out.println("-------------------------4---");
        List list3 = (List)list2.clone();
        for(int i=0; i<list3.size(); i++){
            System.out.println("list3["+i+"]="+list3.get(i));
        }
    }
cs

결과


3. ArrayList & LinkedList 비교

소스

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    public static void main(String[] args) {
        //ArrayList & LinkedList 비교
        ArrayList arr = new ArrayList();
        LinkedList link = new LinkedList();
        int temp = 100000;
        
        //ADD/////////////////////////////////////////////////////////////////
        Date time1 = new Date();
        long start1 = time1.getTime();        //ArrayList 시작 시간
        
        for (int i = 0; i < temp; i++) {
            arr.add(String.valueOf(i));
        }
        time1 = new Date();
        long end1 = time1.getTime();        //ArrayList 종료 시간
        System.out.println("ArrayList - add time : "+(end1-start1)+" nanoSec");
        
        Date time2 = new Date();
        long start2 = time2.getTime();        //LinkedList 시작 시간
        for (int i = 0; i < temp; i++) {
            link.add(String.valueOf(i));
        }
        time2 = new Date();
        long end2 = time2.getTime();        //LinkedList 종료 시간
        System.out.println("LinkedList - add time : "+(end2-start2)+" nanoSec");
        
        //GET//////////////////////////////////////////////////////////////////
        time1 = new Date();
        start1 = time1.getTime();            //ArrayList 시작 시간
        
        for (int i = 0; i < temp; i++) {
            arr.get(i);
        }
        time1 = new Date();
        end1 = time1.getTime();                //ArrayList 종료 시간
        System.out.println("ArrayList - get time : "+(end1-start1)+" nanoSec");
        
        time2 = new Date();
        start2 = time2.getTime();            //LinkedList 시작 시간
        for (int i = 0; i < temp; i++) {
            link.get(i);
        }
        time2 = new Date();
        end2 = time2.getTime();                //LinkedList 종료 시간
        System.out.println("LinkedList - get time : "+(end2-start2)+" nanoSec");        
 
    }//main end
cs

결과



'* Programming > JAVA' 카테고리의 다른 글

DAY22 컬렉션프레임워크 Map  (0) 2016.08.03
DAY22 컬렉션프레임워크 Set  (0) 2016.08.03
DAY22 컬렉션프레임워크 Vector  (0) 2016.08.03
DAY21 컬렉션 프레임워크  (0) 2016.08.03
DAY21 싱글톤 패턴  (0) 2016.08.02

22일차 강의 정리


소스1 * import 는 import java.util.*; 로 고정

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
32
33
34
35
36
37
38
39
40
41
42
public class Ex01 {
    public static void main(String[] args) {
        //Vector
        //data 관리 -  정보 관리
        //변수,,배열(정적),,->동적할당
        //jdk 1.0 ~ Vector(List, Set) - 입력, 삭제
        //List - 순서, 인덱스, 값의 중복, 수정, 추가
        //Set - 집합, 순서x, 중복x, 수정,추가개념 x
        
        Vector vec = new Vector();
        System.out.println("1 capasity: "+vec.capacity());    //처음 공간 10
        vec.add("일");
        vec.add("이");
        vec.add("삼");
        vec.addElement("사");
        
        vec.trimToSize();    //없는 공간 자르기
        System.out.println("2 capasity: "+vec.capacity());    //잘라내서 저장공간4
        
        vec.add("이");
        System.out.println("3 capasity: "+vec.capacity());    //추가하면 +4(기존용량의 2배로증가)
        vec.add(3);
        vec.addElement(4);
        System.out.println("4 capasity: "+vec.capacity());    
        System.out.println("---------------------------------");
        System.out.println("size: "+vec.size());    //실제들어있는 용량
        
        vec.remove(1);                //idx번호 1 삭제
        vec.removeElement("삼");    //() 값 삭제
        //출력방법 1
        for (int i = 0; i < vec.size(); i++) {
            System.out.print(vec.get(i)+" ");
        }
        System.out.println("\n---------------------------------");
        //출력방법 2
        Enumeration enu = vec.elements();
        while(enu.hasMoreElements()){
            System.out.println(enu.nextElement());
        }
 
    }
}
cs

처음 용량을 10으로 할당된다.

처음의 용량을 넘어서 값이 추가 된다면 현재의 용량의 X2 로 증가한다.

결과1

소스2

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class Ex02 {
    public static void main(String[] args) {
        Vector vec = new Vector(53);        //(초기용량, 증가량)
        System.out.println("1 capasity: "+vec.capacity());
        System.out.println("size: "+vec.size());    //실제들어있는 용량
        
        vec.add(1);
        vec.add(2);
        vec.add("일");
        vec.add("이");
        vec.add("삼");
        System.out.println("2 capasity: "+vec.capacity());
        System.out.println("size: "+vec.size());
        
        vec.add("사");    //초기용량 5를 넘어선순간 증가량+3을 더해 공간이 8로 증가
        System.out.println("3 capasity: "+vec.capacity());
        System.out.println("size: "+vec.size());
        
        System.out.println("--------------------------");
        System.out.println("인덱스번호(2)의 값: "+vec.get(2));
        System.out.println("인덱스번호(3)의 값: "+vec.elementAt(3));
        System.out.println("\"3\"이 있는가? "+vec.contains(new Integer(3)));//내부에 값이 있는지 true/false 
        System.out.println("내용(이)의 인덱스번호 : "+vec.indexOf("이"));    //"이"라는 값의 인덱스번호 출력
        
        System.out.println("--------------------------");
        Enumeration enu = vec.elements();
        while(enu.hasMoreElements()){
            System.out.print(enu.nextElement()+" ");
        }
        System.out.println();
        //커서가 끝까지 가 있어서 다시출력하기위해서는 객체다시생성필요
//        System.out.println("---------------------------------------------------");
//        enu = vec.elements();        
//        while(enu.hasMoreElements()){
//            System.out.println(enu.nextElement());
//        }    
        System.out.println("--------------------------");
//        vec.clear();        //모든 내용 삭제
//        vec.trimToSize();    //모든 용량 삭제
        System.out.println("3 capasity: "+vec.capacity());
        System.out.println("size: "+vec.size());
 
        System.out.println("--------------------------");
        System.out.println("--------------------------");
        Iterator ite = vec.iterator();        //Enumeration와 동일 커서
        while(ite.hasNext()){
            System.out.print(ite.next()+" ");
//            ite.remove();        //vec 내용을 삭제
//        }
//        System.out.println("--------------------------");
//        System.out.println("--------------------------");
//        ite = vec.iterator();        //Enumeration와 동일 커서
//        while(ite.hasNext()){
//            System.out.println(ite.next());    //remove 로 삭제되어 아무것도 출력없음
//            ite.remove();
        }
        System.out.println();
        System.out.println("=======================================");
        Object[] arr = new Object[vec.size()+1];
        vec.copyInto(arr);        //백터 -> 배열로
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");        //null값은 null로 출력
        }
 
    }//main end
}//class end
cs

결과2


+ Recent posts