728x90
반응형
1. 기본 타입
int [] data = new int [capacity];
Arrays.sort(data);
//int 배열이 모두 꽉 차있을 경우
Arrays.sort(data, 0, size);
//int 배열이 size-1까지 size개만 있을 경우
2.객체의 문자열 정렬
String [] fruits = new String[] {"Pineapple", "Apple", "Oragne", "Banana"};
Arrays.sort(fruits);
for(String name : fruits)
System.out.println(name);
3.ArrayList의 문자열 정렬
List<String> fruits = new ArrayList<String>();
fruits.add("Pineapple");
fruits.add("Apple");
fruits.add("Oragne");
fruits.add("Banana");
Collections.sort(fruits);
for(String name : fruits)
System.out.println(name);
4. 사용자 정의 객체 정렬
public class Fruit {
public String name;
public int quantity;
public Fruit(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
}
//somewhere in your program
Fruit [] fruits = new Fruit[4];
fruits[0] = new Fruits("Pineapple",70);
fruits[1] = new Fruits("Apple", 100);
fruits[2] = new Fruits("Oragne", 80);
fruits[3] = new Fruits("Banana", 90);
Arrays.sort(fruits);
5. Comparable 인터페이스 정렬 [이름 순 정렬]
public class Fruit implements Comparable<Fruit>{
public String name;
public int quantity;
public Fruit(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
public int compareTo(Fruit other) {
return name.compareTo(other.name);
}
}
//somewhere in your program
Fruit [] fruits = new Fruit[4];
fruits[0] = new Fruits("Pineapple",70);
fruits[1] = new Fruits("Apple", 100);
fruits[2] = new Fruits("Oragne", 80);
fruits[3] = new Fruits("Banana", 90);
Arrays.sort(fruits);
6. 변수로 정렬 [재고 수량 순 정렬]
public class Fruit implements Comparable<Fruit> {
public String name;
public int quantity;
public Fruit(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
public int compareTo(Fruit other) {
return quantity - other.quantity;
}
}
// somewhere in your program
Fruit [] fruits = new Fruit[4];
fruits[0] = new Fruit("Pineapple",70);
fruits[1] = new Fruit("Apple",100);
fruits[2] = new Fruit("Orange",80);
fruits[3] = new Fruit("Banana",90);
Arrays.sort(fruits);
7. 두 가지 기준 정렬 -Comparator
//Comparator 클래스를 extends하고, compare 메서드를 오버라이딩하는 클래스 정의 후
//그 클래스의 객체를 하나 생성
Comparator<Fruit> nameComparator = new Comparator<Fruit>() {
public int compare(Fruit fruit1, Fruit fruit2) {
return fruit1.name.compareTo(fruit2.name);
}
};
Comparator<Fruit> quantComparator = new Comparator<Fruit>() {
public int compare(Fruit fruit1, Fruit fruit2) {
return fruit1.quantity - fruit2.quantity;
}
};
Arrays.sort(fruits, nameComparator);
// or
//Arrays.sort(fruits, quantComparator);
//comparator 객체 지정은?
8. 데이터 객체의 정적 변수 지정
public class Fruit {
public String name;
public int quantity;
public Fruit(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
public static Comparator<Fruit> nameComparator = new Comparator<Fruit>() {
public int compare(Fruit fruit1, Fruit fruit2) {
return fruit1.name.compareTo(fruit2.name);
}
};
public static Comparator<Fruit> quantComparator = new Comparator<Fruit>(){
public int compare(Fruit fruit1, Fruit fruit2) {
return fruit1.quantity - fruit2.quantity;
}
};
}
따라서,
//정렬 시
Arrays.sort(fruits, Fruit.nameComparator);
728x90
반응형
'Java > Java 알고리즘' 카테고리의 다른 글
[알고리즘] 4-2. 클래스 이진트리 (0) | 2022.03.03 |
---|---|
[알고리즘] 4-1. 검색 트리 (0) | 2022.03.03 |
[알고리즘] 3-4. 분할 정복을 이용한 정렬 (3) (0) | 2022.03.02 |
[알고리즘] 3-3. 분할 정복을 이용한 정렬 (2) (0) | 2022.03.02 |
[알고리즘] 3-2. 분할 정복을 이용한 정렬 (0) | 2022.03.02 |