정상에서 IT를 외치다

JAVA 에서의 정렬 본문

개발

JAVA 에서의 정렬

Black-Jin 2019. 2. 25. 00:01
반응형


- Primitive 타입인 경우

int[] data = new int[capacity]


//data[0] 에서 data[capacity-1]까지 데이터가 꽉 차있는 경우

Arrays.sort(data);


//size개의 데이터만 있는 경우

Arrays.sort(data, 0, size);


- 객체 경우 

String[] fruits = new String[] {"Pineapple", "Apple", "Banana" ...};

Arrays.sort 사용 동일


- 사용자 정의 객체


Fruit[] fruits = new Fruit[4];

fruits [0] = new Fruit("Pineapple", 70);

...


1. Comparable Interface

class Fruit implements Comparable<Fruit> {

String name; //이름

int quantity; //재고

publid Fruit(String name, int quantity) {

this,name = name;

this.quantity = quantity;

}

public int compareTo(Fruit other) {

return name.compareTo(other.name); // 이름순

return quantity - other.quantity; // 재고수량 순

}

}


2. 두 가지 기준을 동시에 지원하고 싶으면?

- Comparator 을 사용해야 한다.

Camparator<Fruit> nameComparator = new Comparator<Fruit>() {

public int compare(Fruit fruit1, Fruit fruit2) {

return fruit1.name.compareTo(fruit2.name);

}

};

Camparator<Fruit> quantComparator = new Comparator<Fruit>() {

public int compare(Fruit fruit1, Fruit fruit2) {

return fruit1.quantity - fruit2.quantity);

}

};


->Fruit 

class Fruit {

String name; //이름

int quantity; //재고

publid Fruit(String name, int quantity) {

this,name = name;

this.quantity = quantity;

}

Public static Camparator<Fruit> nameComparator = new Comparator<Fruit>() {

public int compare(Fruit fruit1, Fruit fruit2) {

return fruit1.name.compareTo(fruit2.name);

}

};

Public static Camparator<Fruit> quantComparator = new Comparator<Fruit>() {

public int compare(Fruit fruit1, Fruit fruit2) {

return fruit1.quantity - fruit2.quantity);

}

};

}


Arrays.sort(fruits, nameComparator)


- ArrayList 경우

List<String> fruits = new ArrayList<String>();

fruits .add("Pineapple")

fruits .add("Apple")

fruits .add("Banana")


Collections.sort(fruits)



반응형

'개발' 카테고리의 다른 글

Synchronous, Asynchronous, Blocking, Non-Blocking  (0) 2021.01.19
[Layer Architecture] 레이어 아키텍처  (2) 2019.06.07
[Recursion] 재귀함수  (0) 2019.01.29
[Django] Cookiecutter 설치  (0) 2018.10.09
[Django] Django 환경 설정  (0) 2018.10.09
Comments