반응형
반응형

📝CREATE DTABSE

  • CREATE DATABASE DB명;
  • CREATE DATABASEstudent;
    • 이걸로 DB를 만들 수 있습니다
CREATE DATABASE student;

 

📝DROP DTABSE

  • DROP DATABASE DB명;
  • DROP DATABASE student;
    • 이걸로 DB를 지울 수 있습니다

 

DROP TABLE student;

 

DB를 다시 만들고 USE문을 이용해 그 해당DB안에 밑에 구조의 테이블을 만드려고 합니다

 

📝USE DATABASE

  • USE DB명;
  • USE student;
    • 이걸로 사용할 DB를 지정할 수 있습니다
USE student;

 

 

📝CREATE TABLE

  • CREATE TABLE 테이블명 (
  •     필드명  데이터 타입   조건,
  •     필드명 ...
  • );
    • 이런 형식으로테이블을 만드는게 기본 구조입니다.

 

CREATE TABLE student(
	ID   VARCHAR(8) PRIMARY KEY NOT NULL,
	NAME VARCHAR(20),
	AGE  INT
);

 

📝DROP TABLE 

  • DROP TABLE 테이블명;
  • DROP TABLE student;
    • 이거를 이용해서 테이블을 삭제할 수 있습니다.

 

DROP TABLE student;
반응형
반응형

 

📝Server Status

현재 접속된 서버의 가동 상태, 포트, 환경 파일의 경로, 메모리 상태, CPU상태 등을 확인 할 수 있다.

 

📝Client Connections

연결된 클라이언트 목록, 세부 연결 상태가 휴면(Sleep)인지 등을 확인 가능하며 Kill Connection(s)로 서버와 연결을 강제로 끊을수도 있다

 

📝User and Privileges

MysQL 사용자를 관리할 수 있다.

 

📝Status and System Variables

MySQL 서버에 설정된 시스템 변수 확인과 수정을 할 수 있다.

 

📝Data Export, Data Import/Restore

백업과 복원 관련된 설정을 할 수 있다.

 

 

📝Startup / Shutdown

MySQL 서버의 현재 작동 상태를 확인 가능합니다. 서버 중지와 시작을 여기서 할 수 있습니다.

 

📝Server Logs

서버에 기록된 오류, 경고, 방화벽 등의 로그를 확인 할 수 있습니다 문제가 발생하면 보통 여기에서 분석하여 문제를 해결합니다.

 

📝Options File

MySQL의 핵심 설정 파일인 my.ini 내용을 GUI 모드로 보여줍니다. 여기서 편집도 가능합니다.

 

 

📝Dashboard

네트워크, MySQL서버, InnoDB의 상태를 그래픽으로 보여줍니다.

 

📝Performance Reports 

입출력이 오래 걸린 파일 비용이 많이 든 쿼리문, 데이터베이스의 통계 등의 항목을 조회하고 내보내기 할 수 있습니다.

 

📝Performance Schema Setup

MySQL 성능에 대한 설정을 합니다. 세부 설정도 가능합니다.

 

 

반응형
반응형

📝백업

백업할 때 데이터베이스가 저장된 하드디스크와 같은 곳에 백업하는 것은 의미가 없습니다

 

 

여기에서 잘렸는데 이 화면에도 Export버튼이 밑에 숨겨져있습니다. 잘려서 안 보이네요 ㅠ

 

📝Tables to Export

백업할 스키마랑 테이블을 선택해줍니다. (빨간색)

 

📝Object to Export

모두 체크 표시해 스토어드 프로시저, 스토어드 함수, 트리거 등도 백업할 수 있습니다. (노란색)

 

📝Export to Self-Contained File

백업할 경로를 설정합니다 (초록색) 그 후  Create Dump in a Single, Include Create Shema에도 체크 표시를 합니다. (먼지 모르겠음)

 

📝Export Progress

여기에서 위에 설정한 내용을 백업을 Start합니다. 저 사진에는 이미 Export해서 Export Again이라고 나오네요

 

📝복원

사용 중인 데이터베이스를 복원하면 문제가 생길 수도 있으므로 다른 DB로 변경해야 합니다.

 

 

📝Import from Self-Contained File

백업할 데이터를 선택해줍니다.

 

📝Default Schema to be Imported To

임포트할 db를 선택해줍니다.

    

📝Import Progress

여기에서 Import Again이라고 나오지만 보통 Import start라고 보여집니다

반응형
반응형

 

Administration - User and Privileges 탭을 누르면 사용자 관리 화면이 나옵니다.

 

📝Login탭

Add Acount는 계정 만들기Login Name에 이름과 Password를 적어서 Apply로 적용시키면 됩니다.

 

 

📝Account Limits

최대 쿼리수, 최대 업데이트수, 시간당 최대 접속 수, 실시간 동시 접속 최대 수 등을 설정할 수 있습니다 모두 0으로 되어 있는데 이는 제한이 없다는 말입니다.

 

📝Administrative Roles

어떤 권한을 줄 수 있을지 정할 수 있습니다 초록색 부분으로 임의로 설정할 수도 있고 이미 만들어져 있는 걸(빨간색) 활용할수도 있습니다 DBA는 모든 권한이 있으므로 클릭시 전체가 다 체크표시가 되게 되는 것이죠

 

📝Schema Privileges

어떤 스키마에 대한 어떤 권한을 줄지 설정이 가능합니다.

 

여기에서는 제가 springdb라는 스키마를 선택했고 밑에서 어떤 권한을 줄지 설정을 했습니다.

    

반응형
반응형

 

📝폭포수모델

앞 단계에서 문제가 발생했을 때 되돌아가기 어렵다 가장 핵심적인 단계업무 분석과 시스템 설계입니다.

두 단계를 합쳐 전체 공정의 최소 50% 이상을 할애해야 한다 이 두단계의 비율을 줄일 수록 프로젝트 실패 확률이 높아진다

 

📝소프트웨어 공학

어떤 프로그램을 작성해달라는 요청을 받으면 계획과 분석보다는 무작정 코딩부터 했다.

하지만 어떤 체계를 가지고 작업을 해야 개발, 운용, 유지보수 등 여러가지를 더 좋게 할 수 있는지 알아내는 학문입니다.

 

  • 공학
    • 공업적인 생산에 응용하여 생산력과 생산품의 성능을 향상·발전시키기 위한 과학 기술의 체계적인 학문

 

📝필드(열), 레코드(행), 엔터티

아이디, 이름 , 주소들을 각각 열 이름(엔터티)이라고 하며 그 밑으로 세로 줄을 열(필드)라고 합니다. 

Lee 이민용 경기도 부천시 중동과 같은 열에 해당하는 정보를 행(레코드)[가로]라고 합니다. 

 

📝SQL

  1. 데이터베이스를 조작하는 언어
  2. 대부분 DBMS제품에서 공통적으로 호환된다 그래서 다른 시스템으로 이식하는데 큰 문제가 없다
  3. SQL은 바로 질의하고 결과를 얻는 대화식 언어이다.
  4. 클라이언트 / 서버 구조를 지원합니다. 클라이언트에서 질의하면 서버에서 질의를 받아 처리합니다.

 

반응형
반응형

 

📝데이터베이스 생성

 

처음 화면에서 서버에 들어오시면 이런 화면인데 빨간색 SCHEMAS 를 누르세요

 

왼쪽에 보시면 DB들이 있습니다. 오른쪽 눌러서 Create Schemas 해서 만듭시다.

 

이름을 showdb라고 지어주고 apply누르시면 뭔 창이 나오는데 그냥 apply계속 하시면 됩니다.

 

 

제대로 되시면 왼쪽에 SCHEMAS에 shobdb가 만들어졌을테고 밑에는 성공한 표시가 나올 것입니다.

 

 

📝테이블 생성

이제 테이블을 만들어 봅시다 shopdb를 열면 tables가 나오는데 오른쪽 클릭후 Create Table을 눌러주세요

 

  • Table Name
    • 만들 table의 이름을 의미합니다
  • Column Name
    • memberID와 같이 필드 이름을 의미합니다
  • Datatype
    • 어떤 자료형이 들어갈지에 대해서 입니다.  CHAR(8)이란 CHAR형 8글자 까지입니다
  • NN
    • NotNull의 약자로 Null값은 안 들어간다는 의미입니다
  • PK
    • Primary Key라는 의미로 나중에 알아보도록 하겠습니다

 

경고창은 대소문자를 소문자로 변경한다는 의미입니다. 즉 테이블의 이름이 membertbl로 만들어지게 됩니다.

 

 

📝데이터 입력

 

이제 만들어진 테이블에 데이터를 입력해보겠습니다. 테이블을 열면 저희가 만든 테이블이 있고 오른쪽버튼을 눌러

Select Rows - Limit 1000을 누르세요

 

 

직접 저부분에 입력할 수 있습니다. 다 입력하셨으면 Apply 잊지 마세요~ Apply누르면 창이 뜨고 지금 이 사진처럼 SELECT * FROM... 이런 비슷한 게 있는데 원래는 저러한 코드로 입력해서 테이블을 생성하고 데이터를 넣고 하는 것입니다. 하지만 크벤치에서는 이걸 쉽게 도와주는 거저걸 쿼리문이라고하고 SQL문이라고도 합니다.

 

다음엔 저걸 이용해서 만들어 보도록 하겠습니다.

반응형
반응형

요즘 DB Tool 좋은 게 많으니 MySql만 사용할 수 있는 DB Tool인 워크벤치보다는 무료인 Hedisql, DBeaver추천 드립니다. 저는 참고로 IntelliJ에서 상용버전인 DataGrip사용중 입니다.

 

설치시 입력한 비밀번호를 입력해서 들어갈 수 있습니다

 

📝쿼리창

쿼리문을 입력할 수 있습니다 번개모양으로 전체 실행이 가능하고 원하는 부분을 블록처리해서 번개 부분을 누르면

그 쿼리문만 실행할 수 있습니다. (단축키 Ctrl + Enter)

 

📝쿼리 결과 창

해당 쿼리문을 사용했을 때 그 결과를 보여줍니다.

 

📝결과 메시지 창

쿼리문이 성공했는지 알려주고 데이터 개수와 쿼리 수행시간도 보여줍니다.

 

📝DB관련 설정창(Administration)

서버 상태 관리자 설정 등 여러 DB를 설정하는 창입니다. 추후에 포스팅 할 예정입니다.

 

📝Schemas

MySQL에서는 스키마 = DB입니다. DB목록들이 보여지게됩니다

 

📝새쿼리창

쿼리창을 만듭니다.

반응형
반응형

📝position (relative , absolute, fixed)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    span{
        background-color: red;
        margin:5px;
        position:relative;
        color:white;
    }
    div{
        background-color: blue;
        color:white;
        
    }
    </style>
</head>
<body>
    <span style="top:5px">span</span><span style="top:-5px">span</span><span style="bottom:5px">span</span><span style="right:5px">span</span>
    <div style="position:absolute; bottom:5px">abc</div>
    <span >div는 없어요!</span>
    <div style="position: fixed;  right:0">sdfsd</div>
</body>
</html>

position을 통해 해당 요소의 위치를 옮길 수 있습니다.

 

  • relative
    • 해당 요소 위치를 기준으로 top, bottom, left, right를 줄 수 있습니다.
  • absolute
    • 부모 요소를 기준으로 배치됩니다. 그 기준으로 top, bottom, left, right를 줄 수 있습니다.
    • 여기에서는 absolute적용시킨 부모요소가 따로 없기 때문에 그 위에인 body가 조상이 되어서 body 기준으로 위치를 지정받게 됩니다.
  • fixed 
    • 문서 흐름에서 제거 되어서 다른 요소를 밀어내거나 하지 않습니다
    • 스크롤바를 내리던 올리던 작업표시줄은 계속 위에 있잖아요 그런 기능입니다. 항상 어딜가든 고정되어 있는 것이죠

 

 

📝원하는 DIV 최상단 노출시키기 (z-index)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    
    div{
        width:50px;
        height:50px;
        position:absolute;
        
    }
    </style>
</head>
<body>
    <div style="left:20px; background-color: blue; z-index: 4;"></div>
    <div style="left:40px; background-color: rgb(56, 56, 255);  z-index: 3"></div>
    <div style="left:60px; background-color: rgb(148, 148, 255);  z-index: 2"></div>
    <div style="left:80px; background-color: rgb(212, 212, 255);  z-index: 1"></div>
</body>
</html>

첫번째 사진 z-index를 적용 안 한 사진입니다. 맨 마지막 div가 맨 위에 올라간 걸 볼 수 있습니다. 하지만 전 반대로 첫번째가 가장 위로가게 하고 싶습니다. 이걸 어떻게 할까요 z-index를 적용시키면 됩니다. z-index를 적용시키려면 position을 꼭 넣어줘야합니다. positon이 있어야 겹치던가 해서 위 아래를 상대적인 숫자 값을 넣어서 정할 수 있으니깐요

 

z-index는 양수 ~ 음수까지 갖을 수 있습니다. 숫자가 낮을 수록 뒤에 배치되며 숫자가 높을 수록 앞으로 나옵니다.

 

 

반응형
반응형
package src;

import java.util.*;

// Ex) ArrayList, LinkedList, Vector 등 * 내부적으로 Arrays.sort()를 사용

class People implements Comparable<People> {
	

    private String name;
	private int age;
	
    public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

    
    public People(String name, int age){
        this.name = name;
        this.age= age;
    }

    @Override
    public int compareTo(People people) {
         if (this.age < people.age) {
             return -1; 
         } else if (this.age == people.age) {
             return 0;
         } else {
             return 1;
         }
     }

	
	
}

 

package src;

class Point implements Comparable<Point> {
	
	
	
//	현재 객체 < 파라미터로 넘어온 객체: 음수 리턴
//	현재 객체 == 파라미터로 넘어온 객체: 0 리턴
//	현재 객체 > 파라미터로 넘어온 객체: 양수 리턴
//	음수 또는 0이면 객체의 자리가 그대로 유지되며, 양수인 경우에는 두 객체의 자리가 바뀐다.
		
    int x, y;

    Point(int x,int y){
    	this.x = x;
    	this.y = y;
    }
    
    public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	@Override
    public int compareTo(Point p) {
        if(this.x > p.x) {
            return 1; // x에 대해서는 오름차순
        }
        else if(this.x == p.x) { // x좌표가 같으면 
            if(this.y < p.y) { // y에 대해서는 내림차순
                return 1;
            }
        }
        return -1;
    }
}
package src;

import java.util.*;



public class Sort {

	public static void main(String[] args) {
		
		// 기본타입 배열 오름차순
		
		int arr[] = {4,23,33,15,17,19};
        Arrays.sort(arr);
        
        for (int i : arr) {
            System.out.print("["+i+"]");
	}
        System.out.println();
        
        // String 배열 오름차순 기본 타입과 동일
        // ----------------------------------------------------------------
        
        String arr2[] = {"apple","orange","banana","pear","peach","melon"};
        Arrays.sort(arr2);
        
        for (String i : arr2) {
            System.out.print("["+i+"]");
        }

        System.out.println();
        
        // 기본타입 배열 내림차순 정렬
        // ----------------------------------------------------------------
        
        Integer arr3[] = {4,23,33,15,17,19};
        Arrays.sort(arr3,Collections.reverseOrder());
        
        for (int i : arr3) {
            System.out.print("["+i+"]");
        }
        
        String arr4[] = {"apple","orange","banana","pear","peach","melon"};
        Arrays.sort(arr4,Collections.reverseOrder());
        System.out.println();
        
        
        // String 배열 내림차순 정렬
        // ----------------------------------------------------------------
        
        for (String i : arr4) {
            System.out.print("["+i+"]");
        }
     
        int arr5[] = {4,23,33,15,17,19};
        // int[] arr5 = {4,23,33,15,17,19};
        // int[] arr5 = new int[] {4,23,33,15,17,19};
        // int arr5[] = new int[] {4,23,33,15,17,19};
        // 다 동일
        
        Arrays.sort(arr5, 0, 4); // 0,1,2,3 요소만 정렬
        System.out.println();
        
        // 배열 일부분만 정렬 
        // ----------------------------------------------------------------
        
        for (int i : arr5) {
            System.out.print("["+i+"]");
        }
        System.out.println();
        
        //  객체 배열 정렬할시에는 comparable 이나 comparator을 사용해야 한다.
        // ----------------------------------------------------------------
        
        People[] arr6 = { new People("상현", 20)
                , new People("철수", 14)
                , new People("경완", 31)
                , new People("대호", 40)
                , new People("지운", 24) 
            };
    		
            Arrays.sort(arr6); //오름차순 정렬        
            
                        
            for (People i : arr6) { //오름차순 출력
                System.out.print("["+ i.getName() + i.getAge() +"]");
            }
    		
            Arrays.sort(arr6,Collections.reverseOrder()); // [철수(14)][상현(20)][지운(24)][경완(31)][대호(40)]
            System.out.println();
    		
            for (People i : arr6) { //내림차순 출력
                System.out.print("["+i.getName() + i.getAge()+"]"); //[대호(40)][경완(31)][지운(24)][상현(20)][철수(14)]
            }
         // ------------------------------------------------- Comparable
          
            System.out.println();
            
            List<Point> pointList = new ArrayList<>();
            pointList.add(new Point(5 , 4));
            pointList.add(new Point(3 , 9));
            pointList.add(new Point(2 , 1));
            
            Collections.sort(pointList);
            
            for (Point i : pointList) {
            	System.out.print(" X : "+ i.getX() + " Y : "+ i.getY());
            	System.out.println();
            }
         
            System.out.println();
         // -------------------------------------------------- Comparator
         // 만약 정렬 대상 클래스의 코드를 직접 수정할 수 없는 경우에는 어떻게 객체의 정렬 기준을 정의할 수 있을까요? 
         // 또는 정렬 하고자 하는 객체에 이미 존재하고 있는 정렬 기준과 다른 정렬 기준으로 정렬을 하고 싶을 때는 어떻게 해야할까요?
         
         // 첫 번째 파라미터로 넘어온 객체 < 두 번째 파라미터로 넘어온 객체: 음수 리턴
         // 첫 번째 파라미터로 넘어온 객체 == 두 번째 파라미터로 넘어온 객체: 0 리턴
         // 첫 번째 파라미터로 넘어온 객체 > 두 번째 파라미터로 넘어온 객체: 양수 리턴
         
            
         Comparator<Point> myComparator = new Comparator<Point>() {
            	  @Override
            	  public int compare(Point p1, Point p2) {
            		  if (p1.x > p2.x) {
            	      return 1; // x에 대해서는 오름차순
            	    }
            	    else if (p1.x == p2.x) {
            	      if (p1.y < p2.y) { // y에 대해서는 내림차순
            	        return 1;
            	      }
            	    }
            	    return -1;
            	  }
            	};

            List<Point> pointList2 = new ArrayList<>();
            pointList2.add(new Point(1, 5));
            pointList2.add(new Point(5, 19));
            pointList2.add(new Point(3, 7));
            Collections.sort(pointList2, myComparator); // myComparator에 선언한대로 정렬
            
            for (Point i : pointList2) {
            	System.out.print(" X : "+ i.getX() + " Y : "+ i.getY());
            	System.out.println();
            }
            
         // 참고 Arrays.sort()와 Collections.sort()의 차이
         // Arrays.sort() 배열 정렬의 경우 vs Collections.sort() List Collection 정렬의 경우

	}
	
}

Arrays.sort(배열)을 이용해 오름차순 정렬을 할 수 있습니다.

Arrays.sort(arr1)

 

또한 String 타입의 배열또한 오름차순 정렬 할 수 있습니다. (알파벳 A부터 시작 정렬)

Arrays.sort(arr2)

 

Arrays.sort(배열,Collections.reverseOrder())을 이용해 내림차순 정리할 수 있습니다.

Arrays.sort(arr3,Collections.reverseOrder())

 

또한 String 타입의 배열또한 내림차순 정렬을 할 수 있습니다. (알파벳 Z부터 시작 정렬)

Arrays.sort(arr4,Collections.reverseOrder())

 

Arrays.sort(arr5, 인덱스, 인덱스끝)를 이용해 범위를 정해서 정렬할 수 있습니다. (인덱스 ~ 인덱스끝 -1 까지)

Arrays.sort(arr5, 0, 4)

 

객체도 정렬할 수 있는데 class People implements Comparable<People> {.... 와 같이 

Comparable 또는Comparator를 사용해야 합니다.

Arrays.sort(배열)정렬이 가능한데 여기서 arr6해당하는 배열은 People이라는 객체를 의미합니다.

별반 다른 거 없어 보이는데 위에랑 People 클래스를 정의한 곳에 보면 CompareTo라는 것을 오버라이드했습니다.

객체 같은 특별한 거라든가 내가 원하는대로 커스터마이징 하고 싶은 경우에는 오버라이드해서 적용시켜야합니다.

 

public int compareTo(People people) {
         if (this.age < people.age) {
             return -1; 
         } else if (this.age == people.age) {
             return 0;
         } else {
             return 1;
         }
     }

compareTo라는 함수를 알아봐야하는데 어떤 함수냐면 말 그대로 비교하는 함수입니다.

현재 객체 < 인자로 넘어온 객체(여기선people) : return 음수 
현재 객체 == 인자로 넘어온 객체(여기선people) : return 0
현재 객체 > 인자로 넘어온 객체(여기선people) : return 양수 입니다.

그런데 이렇게 return만 있으면 뭐 어떻게 작성해야할지도 모르잖아요 더 자세히 알아보면

음수 또는 0이면 객체의 자리가 그대로 유지되며, 양수인 경우에는 두 객체의 자리가 바뀝니다.

 

this.age < people.age을 보면 현재 객체의 나이와 인자값 people의 나이를 비교해서

people의 나이가 더 크면-1 즉 그대로 유지됩니다.

같을 경우도 0을 반환함으로써 자리가 그대로 유지 됩니다.

그렇지 않은 경우는 1을 반환합니다. 두 객체의 자리가 바뀌죠 

이 맥락으로 봤을 때 이렇게 만든 사람의 의도는 나이를 비교해서 오름차순으로 정리하는 걸 알 수 있습니다.

예시를 들어서 people 객체의 이름은 무시하고 age가 6 4 이면 6하고 4을 비교하죠? 그러면 6 < 4 이기 때문에

1을 반환합니다. 그러면 자리가 바뀌어서 4 6이 되죠 오름차순으로 정렬 되었죠?

 

Arrays.sort(배열,Collections.reverseOrder()) 을 이용해 내림차순 정렬을 할 수 있습니다.

Arrays.sort(arr6,Collections.reverseOrder())

 

List<Point> pointList = new ArrayList<Point>() 같이 Point객체를 받는 ArrayList여도 똑같이 정렬이 가능합니다.

Collections.sort(ArrayList객체명)

Collections.sort(pointList) 하지만 조금 다른 점이 있는데 Arrays를 사용 안 하고 Collections를 써야합니다.

(ArrayList때문에) 또한 Point객체를 이용하는 경우 Point클래스에 CompareTo를 구현해야합니다.

 

 

 

Comparator<Point> myComparator = new Comparator<Point>() {
            	  @Override
            	  public int compare(Point p1, Point p2) {
            		  if (p1.x > p2.x) {
            	      return 1; // x에 대해서는 오름차순
            	    }
            	    else if (p1.x == p2.x) {
            	      if (p1.y < p2.y) { // y에 대해서는 내림차순
            	        return 1;
            	      }
            	    }
            	    return -1;
            	  }
            	};

또 다른 객체 비교하는 클래스가 있는데 그게 Comparator입니다.

사용 방법Comparator<클래스명> 객체명 = new Comparator<클래스명>()

Comparator<Point> myComparator = new Comparator<Point>()

그 후 Comparable이 CompareTo를 구현한 거처럼 compare(인자값1, 인자값2)으로 오버라이드 해야합니다.

구현 방법은 위에 설명한 것과 동일합니다.

 

Collections.sort(배열명, Comparator클래스를 이용해 만든 객체명)으로

배열에 내가 정의한 compare메소드가 들어있는 객체를 적용시키는 것입니다.

Collections.sort(pointList2, myComparator)

 

그러면 Comparable과 Comparator는 무슨 차이가 있나요? 그걸 알아봅시다.
1번 Comparable을 사용하고자 한다면 compareTo 메소드를 오버라이드해야합니다.

그리고 Comparable은 인터페이스입니다. 그리고 자기 자신과 인자값 한개를 비교하죠


2번은 Comparator의 경우 클래스이며 compare 메소드를 오버라이드를 해야합니다 그리고 

두개의 매개변수를 받아서 그 두개를 비교하죠

 

결과적으로 이런 차이만 있을 뿐 객체를 비교하기 위해 있다는 건 동일합니다.

 

 

 

반응형