μλ° μΈμ΄μμλ λ°°μ΄μ΄λ 컬λ μ
μ μ λ ¬νλ μ¬λ¬ κ°μ§ λ°©λ²μ μ 곡ν©λλ€. μ£Όλ‘ μ¬μ©λλ λ°©λ² μ€ λͺ κ°μ§λ₯Ό μλμ μ€λͺ
νκ² μ΅λλ€.
Arrays.sort() λ©μλλ₯Ό μ΄μ©ν λ°°μ΄ μ λ ¬:
import java.util.Arrays;
public class ArraySortExample {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 6};
Arrays.sort(numbers);
System.out.println("μ λ ¬λ λ°°μ΄: " + Arrays.toString(numbers));
}
}
Collections.sort() λ©μλλ₯Ό μ΄μ©ν 리μ€νΈ μ λ ¬:
import java.util.ArrayList;
import java.util.Collections;
public class ListSortExample {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(8);
numbers.add(1);
numbers.add(6);
Collections.sort(numbers);
System.out.println("μ λ ¬λ 리μ€νΈ: " + numbers);
}
}
Comparatorλ₯Ό μ΄μ©ν μ¬μ©μ μ μ κ°μ²΄ μ λ ¬:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class ObjectSortExample {
public static void main(String[] args) {
ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 22));
// λμ΄λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬
Collections.sort(people, Comparator.comparingInt(person -> person.age));
System.out.println("μ λ ¬λ κ°μ²΄ 리μ€νΈ: " + people);
}
}
μ΄ μΈμλ Comparable μΈν°νμ΄μ€λ₯Ό ꡬννκ±°λ Comparatorλ₯Ό μ¬μ©νλ λ°©λ² λ±μ΄ μμ΅λλ€. μ νν λ°©λ²μ λ°μ΄ν° μ ν λ° μꡬ μ¬νμ λ°λΌ λ€λ₯Ό μ μμ΅λλ€.
μμ μΈ μμ λ κ°κ° λ°°μ΄, 리μ€νΈ, μ¬μ©μ μ μ κ°μ²΄λ₯Ό μ λ ¬νλ λ°©λ²μ 보μ¬μ€λλ€. μ΄ μμ λ€ κ°μ μ£Όμ μ°¨μ΄μ μ λ€μκ³Ό κ°μ΅λλ€:
Arrays.sort()λ₯Ό μ΄μ©ν λ°°μ΄ μ λ ¬:
Arrays.sort() λ©μλλ λ°°μ΄μ μ λ ¬ν©λλ€.
μμ λ°μ΄ν° νμ
λ°°μ΄ λλ κ°μ²΄ λ°°μ΄μ λͺ¨λ μ λ ¬ν μ μμ΅λλ€.
κΈ°λ³Έμ μΌλ‘ μ€λ¦μ°¨μ μ λ ¬μ΄μ§λ§, νμμ λ°λΌ Comparatorλ₯Ό μ¬μ©νμ¬ μ λ ¬ μμλ₯Ό λ³κ²½ν μ μμ΅λλ€.
Collections.sort()λ₯Ό μ΄μ©ν 리μ€νΈ μ λ ¬:
Collections.sort() λ©μλλ List μΈν°νμ΄μ€λ₯Ό ꡬννλ 컬λ μ
μ μ λ ¬ν©λλ€.
κ°μ²΄λ₯Ό μμλ‘ κ°μ§λ 리μ€νΈλ₯Ό μ λ ¬ν λ μ¬μ©λ©λλ€.
λ§μ°¬κ°μ§λ‘ μ€λ¦μ°¨μ μ λ ¬μ΄ κΈ°λ³Έμ΄λ©°, Comparatorλ₯Ό μ¬μ©νμ¬ μ λ ¬ μμλ₯Ό λ³κ²½ν μ μμ΅λλ€.
Comparatorλ₯Ό μ΄μ©ν μ¬μ©μ μ μ κ°μ²΄ μ λ ¬:
μ¬μ©μ μ μ κ°μ²΄λ₯Ό μ λ ¬νκΈ° μν΄ Comparatorλ₯Ό μ¬μ©ν©λλ€.
Comparator μΈν°νμ΄μ€λ₯Ό ꡬννμ¬ λΉκ΅ λ‘μ§μ μ μνκ±°λ, λλ€ ννμμ μ¬μ©ν μ μμ΅λλ€.
Collections.sort() λ©μλλ Arrays.sort() λ©μλμ Comparatorλ₯Ό μ λ¬νμ¬ μ λ ¬ μμλ₯Ό μ§μ ν©λλ€.
μ΄λ¬ν μ°¨μ΄μ μ ν΅ν΄ λ€μν λ°μ΄ν° μ νμ λν΄ μ μ ν μ λ ¬ λ°©λ²μ μ νν μ μμ΅λλ€. λ°°μ΄μ μμ λ°μ΄ν° νμ μ΄λ κ°μ²΄ λͺ¨λμ λν΄ μ¬μ©λ μ μκ³ , 리μ€νΈλ κ°μ²΄λ₯Ό μμλ‘ κ°μ§ λμ ν¬κΈ°μ μλ£κ΅¬μ‘°μ μ¬μ©λ©λλ€. μ¬μ©μ μ μ κ°μ²΄μ κ²½μ° Comparatorλ₯Ό νμ©νμ¬ μ λ ¬ κΈ°μ€μ μ§μ ν μ μμ΅λλ€.
Arrays.sort()κ° μμ νμ λ°°μ΄μ μ§μ μ¬μ©νκΈ° μ΄λ €μ΄ μ΄μ λ λ€μκ³Ό κ°μ΅λλ€:
Genericsμ νκ³: Javaμμ Arrays.sort() λ©μλλ Genericsλ₯Ό μ¬μ©νκ³ μμ΅λλ€. Genericsλ μ°Έμ‘° νμ μ λν νμ μμ μ±μ μ 곡ν©λλ€. κ·Έλ¬λ κΈ°λ³Έ λ°μ΄ν° νμ μ λν Genericsλ μλ°μ μ€κ³μ μ νμ΄ μμ΅λλ€.
Autoboxingκ³Ό Unboxingμ νμ: Arrays.sort()λ λ°°μ΄μ Comparable μΈν°νμ΄μ€μ λ°λΌ μ λ ¬ν©λλ€. μμ νμ μ Comparableμ ꡬννμ§ μκΈ° λλ¬Έμ, μμ νμ λ°°μ΄μ μ§μ μ¬μ©ν μ μμ΅λλ€. λ°λΌμ μμ νμ λ°°μ΄μ κ°μ²΄ λ°°μ΄λ‘ λ³νν΄μΌ ν©λλ€. μ΄ κ³Όμ μμ Autoboxing (μμ νμ μ ν΄λΉνλ λνΌ ν΄λμ€λ‘ λ³ν)κ³Ό Unboxing (λνΌ ν΄λμ€λ₯Ό μμ νμ μΌλ‘ λ³ν)μ΄ λ°μν©λλ€.
κ°λ¨ν μμλ‘ μ€λͺ νλ©΄ λ€μκ³Ό κ°μ΅λλ€:
int[] primitiveArray = {3, 1, 4, 1, 5};
Arrays.sort(primitiveArray); // μ»΄νμΌ μ€λ₯, μμ νμ
λ°°μ΄μ Comparableμ ꡬννμ§ μμ
Integer[] boxedArray = {3, 1, 4, 1, 5};
Arrays.sort(boxedArray); // κ°λ₯, Integerλ Comparableμ ꡬννκ³ μμ
ν¨μ¨μ±: μμ νμ
μ κ°μ²΄λ‘ κ°μΈλ κ³Όμ μ΄ μμ΄ λ©λͺ¨λ¦¬μ μ§μ κ°μ μ μ₯νλ―λ‘ μ±λ₯ λ©΄μμ ν¨μ¨μ μ
λλ€. Arrays.sort()μμ μμ νμ
μ μ§μ μ§μνλ€λ©΄, μ΄λ¬ν ν¨μ¨μ±μ λ¨μ΄λ¨λ¦΄ κ°λ₯μ±μ΄ μμ΅λλ€.
λ°λΌμ, μμ νμ
λ°°μ΄μ λν΄μλ Integerμ κ°μ λνΌ ν΄λμ€λ‘ λ³ννμ¬ μ¬μ©νλ κ²μ΄ μΌλ°μ μΈ μ κ·Ό λ°©λ²μ
λλ€.