<๊ธฐ๋ณธ ํ์ ๋ฐ์ดํฐ ์ ๋ ฌ>
- Arrays ํด๋์ค๊ฐ primitive type์ ๋ฐ์ดํฐ๋ฅผ ์ํ ์ ๋ ฌ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
int[] data = new int[capacity];
// data[0]์์ data[capacity-1]๊น์ง ๋ฐ์ดํฐ๊ฐ ๊ฝ ์ฐจ์๋ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌํ๋ค.
Arrays.sort(data);
//๋ฐฐ์ด์ด ๊ฝ ์ฐจ์์ง ์๊ณ , data[0]์์ data[size-1]๊น์ง size๊ฐ์ ๋ฐ์ดํฐ๋ง ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌํ๋ค.
Arrays.sort(data, 0, size);
- int ์ด์ธ์ ๋ค๋ฅธ primitive type ๋ฐ์ดํฐ(double, char ๋ฑ..)์ ๋ํด์๋ ์ ๊ณตํ๋ค.
<๊ฐ์ฒด์ ์ ๋ ฌ : ๋ฌธ์์ด>
Primitive type ๋ฐ์ดํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก Arrays.sort() ๋ฉ์๋๋ก ์ ๋ ฌ๋๋ค.
// fruits๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ
String[] fruits = new String[] {"pineapple", "apple", "orange", "banana"};
// fruits๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด ์ ๋ ฌ
Arrays.sort(fruits);
// ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํ๋์ฉ ๊บผ๋ด์ ์ถ๋ ฅ
for(String name : fruits)
System.out.println(name);
<ArrayList ์ ๋ ฌ : ๋ฌธ์์ด>
Collections.sort() ๋ฉ์๋๋ก ์ ๋ ฌ๋๋ค.
// fruits๋ผ๋ ์ด๋ฆ์ ArrayList ์ ์ธ ํ add๋ก ๊ฐ์ ์ถ๊ฐ
List<String> fruits = new ArrayList<String>();
fruits.add("pineapple");
fruits.add("apple");
fruits.add("orange");
fruits.add("banana");
// ์ ๋ ฌ
Collections.sort(fruits);
// ์ ๋ ฌ๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ
for(String name : fruits)
System.out.println(name);
<๊ฐ์ฒด์ ์ ๋ ฌ : ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด>
public class Fruit{
public String name;
public int quantity;
public Furit(String name, int quantity){
this.name = name;
this.quantity = 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);
=> ์ด ๊ฒฐ๊ณผ๋ name์ผ๋ก ์ ๋ ฌ์ด ๋ ์ง, quantity๋ก ์ ๋ ฌ์ด ๋ ์ง ์ ์ ์๋ค....
<๊ฐ์ฒด์ ์ ๋ ฌ : Comparable Interface 1>
public class Fruit implements Comparable<Fruit>{
public String name;
public int quantity;
public Furit(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 Fruit("pineapple", 70);
fruits[1] = new Fruit("apple", 100);
fruits[2] = new Fruit("orange", 80);
fruits[3] = new Fruit("banana", 90);
Arrays.sort(fruits);
<๊ฐ์ฒด์ ์ ๋ ฌ : Comparable Interface 2>
public class Fruit implements Comparable<Fruit>{
public String name;
public int quantity;
public Furit(String name, int quantity){
this.name = name;
this.quantity = quantity;
}
public int compareTo(Fruit other){
// return value is ์์ or 0 or ์์
// ์์ : ๋ด๊ฐ ๋น๊ต๋์๋ณด๋ค ์๋ค.
// 0 : ๋์ ๋น๊ต๋์์ ๊ฐ์ด ๋์ผํ๋ค.
// ์์ : ๋ด๊ฐ ๋น๊ต๋์๋ณด๋ค ํฌ๋ค.
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);
<๋ ๊ฐ์ง ๊ธฐ์ค์ ๋์์ ์ง์ํ๋ ค๋ฉด?>
- ํ๋์ ๊ฐ์ฒด ํ์ ์ ๋ํด์ 2๊ฐ์ง ์ด์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ์ง์ํ๋ ค๋ฉด, Comparator๋ฅผ ์ฌ์ฉํ๋ค.
// Comparator ํด๋์ค๋ฅผ extendsํ๋ฉฐ, compare ๋ฉ์๋๋ฅผ overridingํ๋ ์๋ก์ด ์ด๋ฆ ์๋ ํด๋์ค๋ฅผ ์ ์ํ ํ, ๊ทธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ํ๋ ์์ฑํ๋ค.
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);
// ๋๋
Arrays.sort(fruits, quantComparator);
<Comparator>
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;
}
};
}
// main์์ ์ ๋ ฌํ ๋์๋
// Arrays.sort(fruits, Fruit.nameComparator);
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
12-1๊ฐ. ๋ ๋๋ธ๋ํธ๋ฆฌ(1) (0) | 2020.11.17 |
---|---|
11-3๊ฐ. ์ด์ง๊ฒ์ํธ๋ฆฌ (Binary Search Tree) (3) | 2020.11.15 |
์ 11-1๊ฐ. ์ด์ง๊ฒ์ํธ๋ฆฌ(Binary Search Tree) (0) | 2020.11.10 |
์ 10๊ฐ ํธ๋ฆฌ์ ์ด์งํธ๋ฆฌ (0) | 2020.11.08 |
10. ํฉ๋ณ์ ๋ ฌ (merge sort) (3) | 2020.10.15 |
๋๊ธ