www.tcpschool.com/java/java_collectionFramework_list

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com


  • 생성방법: Vector<Integer> v = new Vector<Integer>();
  • 요소추가방법 2가지: v.add(2);  v.add(new Integer(33));
  • 데이터 꺼내오는 방법 4가지: Iterator( ) v.get(i)  /  Collections.sort(v); ->정렬 /  elementAt(i);
  • cf)capacity(용량) 조절하기: trimToSize( ) 이용 
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
67
package ex02.collection.list;
 
import java.util.Collections;
import java.util.Iterator;
import java.util.Vector;
 
//List - 순서있고, 중복허용 
public class Ex01_MainEntry {
    
    public static void main(String[] args) {
        
        Vector<Integer> v = new Vector<Integer>(); //Vector이용 
        System.out.println("length   /   capacity");
        System.out.println(v.size() + "       /       " + v.capacity()); //기본 capacity(용량)는 10
        
        
        
        Vector<Integer> v2 = new Vector<Integer>(34); //(초기용량, 증가용량) -> 3을 다 쓰면, 4씩 증가시키겠다
        v2.add(2); //add방법 1)
        v2.add(new Integer(333)); //add방법 2)
        v2.add(2); //--->여기까지 용량은 3
        v2.add(20);
        v2.add(254);
        v2.add(24); //--->여기까지 용량은 7 (기본용량 3 + 4추가)
        
        System.out.println("length   /   capacity");
        System.out.println(v2.size() + "       /       " + v2.capacity());
        
        
        
        //데이터 꺼내오기  
        System.out.println("\n-------1. iterator() method-------");
        Iterator it = v2.iterator();
        while(it.hasNext()) { //다음요소가 있으면
            System.out.println(it.next()); //꺼내기 
        }
        
        System.out.println("\n-------2. get() method-------");
        for(int i=0; i<v2.size(); i++) {
            System.out.println(v2.get(i));
        }
        
        System.out.println("\n-------3. sort result-------");
        Collections.sort(v2); //=>정렬 
        for(int i=0; i<v2.size(); i++) {
            System.out.println(v2.get(i));
        }
        
        System.out.println("\n-------4. elementsAt() method-------");
        for(int i=0; i<v2.size(); i++) { //Vector에 있는 모든 요소에 대해 반복
            Integer num = v2.elementAt(i); //elementAt은 Integer형으로 반환, 요소 객체 꺼내요기
            System.out.println(num); //->츨력방법1
//            System.out.println(num.toString()); //->출력방법2
            
        }
 
        
        
        System.out.println("\n-------trimToSize() method-------");
        v2.trimToSize(); //capacity(용량) 조정하기
        System.out.println("length   /   capacity");
        System.out.println(v2.size() + "       /       " + v2.capacity());
 
    }
 
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package ex01.set예제;
import java.util.*;
//설명o
class HashSetLotto{
    public static void main(String[] args)     {
        
        Set set = new TreeSet();
        
        for (int i = 0; set.size() < 6 ; i++) {
            int num = (int)(Math.random()*45+ 1//0안나오게 +1 , 1~45까지의 수 중에 랜덤 추출
            set.add(new Integer(num));
        }
    //    List list = new LinkedList(set);    // LinkedList(Collection c)
    //    Collections.sort(list);        // Collections.sort(List list)
        System.out.println(set);
    }
}
cs


random( ) 메소드 참고)

coding-factory.tistory.com/530

 

[Java] 자바 난수(랜덤 숫자) 생성하기 (Math, Random)

자바에서 난수를 얻어내는 방법은 Random클래스를 활용하는 방법과 Math클래스를 활용하는 방법 2가지가 있습니다. 두 방법의 차이점은 Math.random() 메소드는 0.0에서 1사이의 double 난수를 얻는데만

coding-factory.tistory.com


blog.naver.com/PostView.nhn?blogId=jydev&logNo=220714960410

 

JAVA ★ 랜덤함수(Math.random()) 1부터 100까지

랜덤 뽑기와 같이 자바에서도 랜덤으로 수를 배출해내는 난수 클래스가 존재한다. 난수 클래스는 Math라는...

blog.naver.com

 

Person클래스

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
package ex05.collection.set;
 
public class Ex04_Person { //extends Object { 
    
    String name;
    int age;
    
    
    public Ex04_Person(String name, int age) { //생성자 
        this.name = name;
        this.age = age;
    }
 
    
    @Override
    public String toString() {
        
        return "Ex04_Person [name=" + name + ", age=" + age + "]\n\n";
    }
 
    //equals - 두 객체의 내용이 같은지 확인
    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Ex04_Person) { //obj는 최상위클래스니까 Ex04_Person으로 형변환가능
            //이름과 나이가 같은 경우 -> 중복제외가능 
            Ex04_Person temp = (Ex04_Person)obj;
            return name.equals(temp.name) && age == temp.age;
        }
        
        return false//if문이 거짓이면 false 리턴 
    }
 
    //hasCode - 두 객체가 같은 객체인지 확인 -> hashcode값 반환
    @Override
    public int hashCode() {
        //같은 객체이지만 hashcode가 다를 수 있기 때문에 hashcode도 비교 
        return name.hashCode() + age;
             //name의 주소 +  age
        //String은 이름이 같으면 
        //같은 주소를 가질 것 ! (String의 특성을 이용)
        //그래서 name의 주소를 가져온것 
    }
    
    //==>Set의 특징인 중복허용안함을 위해, Person 클래스에 equals와 hashCode 메소드를 만든것, 
    //==>equals()와 hashCode()는 같이 써야됨
 
    
    
    
 
}
 
cs

main클래스

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
package ex05.collection.set;
 
import java.util.HashSet;
import java.util.Set;
 
public class Ex04_HashSet {
    
    public static void main(String[] args) {
        //Set: 순서 없고, 중복허용 X
        Set set = new HashSet(); //Set(부모클래스)를 이용해서 HashSet(자손클래스)객체 생성 가능 
        
        //방법1))
        Ex04_Person p1 = new Ex04_Person("riiii"22);
        set.add(p1);
        
        //방법2))
        set.add(new Ex04_Person("riiii"22));
        
        Ex04_Person p2 = new Ex04_Person("rara"22);
        set.add(p2);
        
    
        set.add(new Ex04_Person("riiii"22));
        set.add(new Ex04_Person("David"20));
        set.add(new Ex04_Person("David"20));
        set.add(new Ex04_Person("David"10));
        set.add(new Ex04_Person("David"10));
 
        //다른 타입도 가능 <>타입 파라미터 제한 안했기 때문
        set.add(new String("bybyby"));
        set.add(new String("hihihi"));
 
        System.out.println(set);
        
        System.out.println("\n=======================================\n");
        
        
        //<<<String은 글자가 같으면 heap영역에 새로운 공간이 생기는게 아니라 주소가 같아진다>>>
        String str = "korea";
        String str2 = "korea";
        System.out.println("str주소 => " + str.hashCode());
        System.out.println("str2주소 => " +str2.hashCode());
        
    }
 
}
 
cs


1.생성

  Set set = new HashSet(); //Set(부모클래스)를 이용해서 HashSet(자손클래스)객체 생성 가능


2.객체 생성하면서 데이터 추가

  1) Ex04_Person p1 = new Ex04_Person("riiii", 22)set.add(p1);

  2) set.add(new Ex04_Person("riiii", 22));

 

 

1
2
3
4
5
//<<<String은 글자가 같으면 heap영역에 새로운 공간이 생기는게 아니라 주소가 같아진다>>>
        String str = "korea";
        String str2 = "korea";
        System.out.println("str주소 => " + str.hashCode());
        System.out.println("str2주소 => " +str2.hashCode());
cs

출처: www.tcpschool.com/java/java_collectionFramework_set

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

TreeSet<E> 클래스
TreeSet 클래스는 데이터가 정렬된 상태로 저장되는 이진 검색 트리(binary search tree)의 형태로 요소를 저장합니다.
이진 검색 트리는 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠릅니다.
JDK 1.2부터 제공되는 TreeSet 클래스는 NavigableSet 인터페이스를 기존의 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리(Red-Black tree)로 구현합니다.
TreeSet 클래스는 Set 인터페이스를 구현하므로, 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않습니다.

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
package ex05.collection.set;
 
import java.util.TreeSet;
 
public class Ex03_TreeSet {
 
    public static void main(String[] args) {
 
//        Set set = new TreeSet(); -> set정의 방법1)
        TreeSet set = new TreeSet(); // set정의 방법2)
        
        int[] score = { 85955035451065100 };
        
        System.out.println(set);
        
        for(int i=0; i<score.length; i++) { //set에 데이터 넣기 
            set.add(new Integer(score[i])); //방법1)
//            set.add(score[i]); //방법2)
        }
        
        System.out.println(set);
        
        
        System.out.println("50보다 작은 값 : " + set.headSet(new Integer(50)));
        System.out.println("50보다 큰 값 : " + set.tailSet(new Integer(50)));
 
    }
 
}
 
cs


1.TreeSet정의 방법

1) Set set = new TreeSet();

2) TreeSet set = new TreeSet();

 

3) 타입 지정=> TreeSet<Integer> set_int = new TreeSet<Integer>(); 


2.데이터 넣기 

  for(int i=0; i<score.length; i++) {

      1) set.add(new Integer(score[i]));

      2) set.add(score[i]);

      }


3.출력

1) System.out.println(set);

2) .headSet() => System.out.println("50보다 작은 값 : " + set.headSet(new Integer(50)));

3) .tailSet() => System.out.println("50보다 큰 값 : " + set.tailSet(new Integer(50)));


출처: https://swalloow.tistory.com/36 [MyCloud]

 

JAVA의 HashSet, TreeSet

Set - HashSet 자바 컬렉션에서 제공하는 Set 인터페이스는 순서를 유지하지 않는 데이터의 집합입니다. Map 구조와 달리 중복을 허용하지 않는다는 특징이 있습니다. HashSet은 내부적으로 해싱(Hashing

swalloow.tistory.com

headSet은 지정된 객체보다 작은 값의 객체들을 반환합니다.
subSet은 범위검색의 결과를 반환합니다. 앞에 오는 것이 from, 뒤에 오는 것이 to 입니다.
tailSet은 지정된 객체보다 큰 값의 객체들을 반환합니다.

 

출처: www.tcpschool.com/java/java_collectionFramework_set

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

HashSet<E> 클래스
HashSet 클래스는 Set 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나입니다.
JDK 1.2부터 제공된 HashSet 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠릅니다.
이러한 HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장합니다.
 
HashSet 클래스는 Set 인터페이스를 구현하므로, 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않습니다.
만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 됩니다.

  • HashSet<String> hs = new HashSet<String>(); =>String타입의 HashSet생성
  • HashSet<Integer> hs2 = new HashSet<Integer>();
  • Set set = new HashSet(); =>자료형지정X, Set(부모클래스)를 이용해서 HashSet(자손클래스)객체 생성 가능
  • hs.add( ~~ ); =>set안에 요소 추가
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package ex05.collection.set;
 
import java.util.HashSet;
import java.util.Iterator;
 
//Set: 순서없고, 중복허용하지 않음
public class Ex02_HashSet {
    
    public static void main(String[] args) {
        //형태1)
//        HashSet<String> hs = new HashSet(); //jdk 5.x 이전에 사용할때 ~ 
        //< >는 타입파라미터 -> 타입을 제한 
        
        //형태2)
        HashSet<String> hs = new HashSet<String>(); 
        //Set타입으로 HashSet객체 생성도 가능 
        //Set hs = new Set은 불가능->인터페이스는 스스로 객체 생성 x
        
        hs.add("키보드");
        hs.add("마우스");
        hs.add("컵");
        hs.add("볼펜");
        hs.add("키보드"); //set은 중복 허용 x -> 처음에 나온 "키보드" 를 덮어 쓴다 
        
        System.out.println("요소 개수: " + hs.size()); //중복 허용 x -> 4개 출력
        
        
        
        Iterator it =  hs.iterator(); 
        //Set안의 값을 불러오기 위해선 Iterator 사용해야함 (리턴타입도 iterator이여야함)
        //it안에 Set안의 값들이 들어있게됨 
        
        while(it.hasNext()) { //다음 요소가 있다면..
            System.out.println(it.next()); //요소를 꺼내와서 출력 
            //순서 없이 나옴     
            
        } //while end 
        
        
        
        //< >타입파라미터에는 레퍼런스타입(참조형데이터타입)이와야함 
        //<> type parameter(타입을 제한함) -> <String>, <Integer> 레퍼런스 타입
//        HashSet<int> hs2 = new HashSet<int>(); => 기본자료형은 X 
//        HashSet<double> hs3 = new HashSet<double>(); => 기본자료형은 X
        HashSet<Integer> hs2 = new HashSet<Integer>();
        HashSet<Double> hs3 = new HashSet<Double>();
        hs2.add(100);
        hs2.add(3);
        hs2.add(10040);
        hs2.add(3);
//        hs2.add("문자문자"); => 에러 but, <>타입파라미터를 쓰지 않으면 가능!!
        
        System.out.println("h2 요소 개수: " + hs2.size());
        it = hs2.iterator();
        
        //1))출력-while문 이용 
        System.out.println("\n----------------while-------------------");
        while(it.hasNext()) { //다음 요소가 있다면..
            System.out.println(it.next()); //요소를 꺼내와서 출력 
            //순서 없이 나옴     
            
        } //while end 
        
        
        //2))출력-확장for문 이용
        System.out.println("\n----------------foreach-------------------");
        for (Object item : hs2) {
            System.out.println(item);
        } //foreach end
        
        
        //3))출력-for문 이용
        System.out.println("\n---------------for--------------------");
        for(int i=0; i<1; i++) {
            System.out.println(hs2);
        } //for end 
        
    }
 
}
 
cs

www.tcpschool.com/java/java_collectionFramework_set

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

출처: wikidocs.net/280

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

자식클래스 extends 부모클래스 => 자식클래스는 부모 클래스를 상속받는다
자식클래스 extends 부모클래스 => 부모클래스는 자식클래스에게 상속한다

출처:velog.io/@ednadev/%EC%9E%90%EB%B0%94-%EC%83%81%EC%86%8DInheritance%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9Overriding

 

자바 상속(Inheritance)과 오버라이딩(Overriding)

클래스 간의 관계 결정하기 상속관계 : ~은 ~이다 (is a) 포함관계 : ~은 ~을 가지고 있다 (has a) 한 클래스의 멤버 변수로 다른 클래스 타입의 참조 변수를 선언하는 것! 상속 (inheritance) 상속하는 클

velog.io

class B extends A { }
B 클래스가 A 클래스를 상속받는다 = A 클래스가 B 클래스에게 상속한다

blog.naver.com/PostView.nhn?blogId=heartflow89&logNo=220960019390

 

[JAVA/자바] 상속의 개념 및 부모/자식 클래스

이번 포스팅은 상속에 대해서 알아보려고 한다. 상속을 사용하는 이유는 결국 더 좋은(빠르고, 유지 보수가...

blog.naver.com


hyonee.tistory.com/143

 

Java 프로그래밍 - 상속(inheritance) / 메소드 재정의(오버라이딩 Overriding)

클래스의 특징 3가지 ① 은닉화 -> public 보다 private를 사용한다. ② 중복성 -> 중복 (함수중복/생성자중복) ③ 상속성 -> 부모클래스의 멤버를 자식에게 물려준다. 자바에서 만들어진 모든 클래스

hyonee.tistory.com

 

+ Recent posts