본문 바로가기

언어/JAVA

JAVA : 객체배열을 다루기(2차원 객체,1차원 정렬)

반응형
객체배열을 다루어보자!

 

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
package test;
 
public class t1 {
    
    public static class Traning{
        int a=0;
        int b=0;
    }
    
    public static void main(String[] args) {
        Traning[] t = new Traning[10];
        
        for(int i = 0;i<10;i++) {
            t[i] = new Traning();
            t[i].a = (int)(Math.random() *100);
            t[i].b = (int)(Math.random() *100);
        }
        
        for(int i=0;i<10;i++) {
            System.out.printf("a: %2d    b: %2d\n",t[i].a,t[i].b);
        }
        
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
JAVA는 동적으로 할당한다.
따라서 Traning[] t = new Traning[10] 을 하는순간 Traning의 객체가 생성된다.
t[0] 은 현재 null point 이다 따라서 각각의 객체 배열마다 class를 할당해주어야 한다.

 

Arrays.sort() 로 객체를 정렬하기
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
package test;
 
 
public class t1 {
    
    public static class Traning implements Comparable<Traning>{
        int a=0;
        int b=0;
        @Override
        public int compareTo(Traning o) {
            if(this.a > o.a){
                return 1;
            }else {
                return -1;
            }
        }
 
    
    }
    
    public static void main(String[] args) {
        Traning[] t = new Traning[10];
        
        for(int i = 0;i<10;i++) {
            t[i] = new Traning();
            t[i].a = (int)(Math.random() *100);
            t[i].b = (int)(Math.random() *100);
        }
        
        System.out.println("정렬전 : ");
        for(int i=0;i<10;i++) {
            System.out.printf("a: %2d    b: %2d\n",t[i].a,t[i].b);
        }
        System.out.println("정렬후 : ");
        
        Arrays.sort(t);
        
        for(int i=0;i<10;i++) {
            System.out.printf("a: %2d    b: %2d\n",t[i].a,t[i].b);
        }
        
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
extends 와 implement 의 차이점은 extends는 상속을 받아서 부모의 형질을 그대로 가져온다.
하지만 implement는 상속받을때 재정의를 한다.
따라서 객체의 Comparable라는 클래스를 상속받아서 compareTo를 재정의 했다.
return 1 -> 참값으로 서로 Swap하는 형태이다. -1인경우에는 거짓이므로 자리를 바꾸지않는다.

Arrays.sort(t); 를 이용해 int형 배열을 정렬하듯이 사용할수있다.

 

Collections.sort() 를 사용해보자.
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
package test;
 
 
public class t1 {
    
    public static class Traning implements Comparable<Traning>{
        int a=0;
        int b=0;
        
        public Traning(int a,int b) {
            // TODO Auto-generated constructor stub
            this.a = a;
            this.b = b;
        }
        
        @Override
        public int compareTo(Traning o) {
            if(this.a > o.a){
                return 1;
            }else {
                return -1;
            }
        }
 
    
    }
    
    public static void main(String[] args) {
        ArrayList<Traning> t = new ArrayList<Traning>();
        
        for(int i = 0;i<10;i++) {
            int a = (int)(Math.random() *100);
            int b = (int)(Math.random() *100);
            t.add(new Traning(a,b));
        }
        
        System.out.println("정렬전 : ");
        for(int i=0;i<10;i++) {
            System.out.printf("a: %2d    b: %2d\n",t.get(i).a,t.get(i).b);
        }
        System.out.println("정렬후 : ");
        
        Collections.sort(t);
        
        for(int i=0;i<10;i++) {
            System.out.printf("a: %2d    b: %2d\n",t.get(i).a,t.get(i).b);
        }
        
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
Collections.sort()는 ArraysList를 정렬하고 싶을때 사용한다.
add를 하기위해서 Traning의 생성자를 만들어서 값을 넣었다.
Arrays.sort와 Collections.sort는 사용방법은 똑같다.

반응형

'언어 > JAVA' 카테고리의 다른 글

PS 용 baseCode(추가예정)  (0) 2020.03.07
백준 : 15684  (0) 2020.01.30
JAVA : 자바의 빠른 입출력  (0) 2020.01.23
JAVA : 2차원 ArrayList  (0) 2020.01.23
JAVA : Vector 연습하기  (0) 2020.01.23