Arrays ν΄λμ€μ sort() λ©μλλ₯Ό μ¬μ©νλ€.
μ€λ¦μ°¨μ μ λ ¬μ΄λ€.
λ΄λ¦Όμ°¨μ μ λ ¬μ μ§μνμ§ μμμ μ§μ ꡬνν΄μΌ νλ€.
Integer[] nums = { 1, 5, 2, 4, 3 };
// μ€λ¦μ°¨μ μ λ ¬
Arrays.toString(nums);
// λ΄λ¦Όμ°¨μ μ λ ¬ > μ§μ μν¨ > μ§μ ꡬν
// Arrays.sort(λ°°μ΄, Comparator);
Arrays.sort(nums, new MyComparator());
Comparator μΈν°νμ΄μ€λ₯Ό μ¬μ©ν μ μλ€.
o1 vs o2
1. μ€λ¦μ°¨μ
a. o1μ΄ λ ν¬λ©΄ > μμ λ°ν > 1
b. o2κ° λ ν¬λ©΄ > μμ λ°ν > -1
c. κ°μΌλ©΄ > 0 λ°ν
2. λ΄λ¦Όμ°¨μ
a. o1μ΄ λ ν¬λ©΄ > μμ λ°ν > -1
b. o2κ° λ ν¬λ©΄ > μμ λ°ν > 1
c. κ°μΌλ©΄ > 0 λ°ν
Arrays.sort(nums2, new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
// if (o1 < o2)
// return 1;
// else if (o1 > o2)
// return -1;
// else
// return 0;
return o2 - o1; // μ μ
}
});
System.out.println(Arrays.toString(nums2));
μμ μ λ¦¬ν΄ λ κ²μ΄ μ«μνμ΄λ€.
λ¬Έμμ΄μ μ°Έμ‘°κ°μ΄λ―λ‘ μ£Όμκ°μ μ°μ°μ λμμ΄ λμ§ μκΈ° λλ¬Έμ ν λ¬Έμ(κ°)μ© λΉκ΅νλ€.
λ§μ½ λ¬Έμμ΄ κ·Έλλ‘ μ λ ¬νλ €λ©΄ compareTo() λ©μλλ₯Ό μ΄μ©νλ©΄ λλ€. (-> μμ΄ ν¬λ©΄ μμ, μμΌλ©΄ μμ, κ°μΌλ©΄ 0μ΄λ€.)
compareToIgnoreCase() λ©μλλ λμλ¬Έμ κ΅¬λΆ μμ΄ λΉκ΅νλ€.
String txt1 = "ABC";
String txt2 = "abc";
for (int i = 0; i < 3; i++) {
char c1 = txt1.charAt(i);
char c2 = txt2.charAt(i);
if (c1 > c2) {
n = 1;
break;
} else if (c1 < c2) {
n = -1;
break;
}
λ¬Έμμ΄ λ°°μ΄ μ λ ¬νκΈ°
String[] names = { "νκΈΈλ", "μ무κ°", "μ μ¬μ", "λ°λͺ
μ", "μ΄μμ ", "ν", "κΉμ² " };
// κ°λλ€μμΌλ‘ μ λ ¬
Arrays.sort(names);
// μ¬μ©μ μ μν μ λ ¬
Arrays.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// return o1.compareTo(o2); // μ€λ¦μ°¨μ
// return o2.compareTo(o1); // λ΄λ¦Όμ°¨μ
// return o1.length() - o2.length(); // κΈμμ λΉκ΅ > μ€λ¦μ°¨μ
// return o2.length() - o1.length(); // κΈμμ λΉκ΅ > λ΄λ¦Όμ°¨μ
if (o1.length() > o2.length()) {
return 1;
} else if (o1.length() < o2.length()) {
return -1;
} else {
// 2μ°¨ μ λ ¬ κΈ°μ€. 1μ°¨λ‘ μ λ ¬ν λ€ 2μ°¨λ‘ μ λ ¬νκ³ μΆμ λ μ¬κΈ°μ μ μΌλ©΄ λλ€.
return o2.compareTo(o1); // λ¬Έμ μ½λκ° λΉκ΅
}
}
});
λ μ§ μ λ ¬
Arrays.sort(dates);
Arrays.sort() λ©μλμ μΈμλ‘ Comparator μΈν°νμ΄μ€μ compare() λ©μλ
Calendar[] dates = new Calendar[5];
for (int i = 0; i < dates.length; i++) {
dates[i] = Calendar.getInstance();
}
dates[0].add(Calendar.DATE, 7);
dates[1].add(Calendar.DATE, -2);
dates[2].add(Calendar.DATE, 1);
dates[3].add(Calendar.DATE, 0);
dates[4].add(Calendar.DATE, 3);
//1.
Arrays.sort(dates);
//2.
Arrays.sort(dates, new Comparator<Calendar>() {
@Override
public int compare(Calendar o1, Calendar o2) {
// λ μ§ μ μ λ ¬
// return (int) (o2.getTimeInMillis() - o1.getTimeInMillis()); // νλ³ν μ μνν μ μμ
// return o2.compareTo(o1); // λ°λμ compareTo() μ¬μ©
// μμΌ μ μ λ ¬ (μΌ(1) ~ ν (7))
return o1.get(Calendar.DAY_OF_WEEK) - o2.get(Calendar.DAY_OF_WEEK); // μ€λ¦μ°¨μ
// return o2.get(Calendar.DAY_OF_WEEK) - o1.get(Calendar.DAY_OF_WEEK); // λ΄λ¦Όμ°¨μ
}
});
κ°μ²΄ μ λ ¬
Score[] list = new Score[5];
list[0] = new Score("νκΈΈλ", 100, 90, 80);
list[1] = new Score("μ무κ°", 98, 78, 88);
list[2] = new Score("μ μ¬μ", 78, 95, 79);
list[3] = new Score("λ°λͺ
μ", 56, 78, 76);
list[4] = new Score("μ΄μμ ", 99, 67, 79);
System.out.println(Arrays.toString(list));
// μ΄λ¦μ μ λ ¬
Arrays.sort(list, new Comparator<Score>() {
@Override
public int compare(Score o1, Score o2) {
// μ΄λ¦ λΉκ΅
// return o1.getName().compareTo(o2.getName());
// κ΅μ΄μ μ λ΄λ¦Όμ°¨μ
// return o2.getKor() - o1.getKor();
// μ΄μ λ΄λ¦Όμ°¨μ
return (o2.getKor() + o2.getEng() + o2.getMath()) - (o1.getKor() + o1.getEng() + o1.getMath());
}
});
class Score {
private String name;
private int kor;
private int eng;
private int math;
public Score(String name, int kor, int eng, int math) {
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public String getName() {
return name;
}
public int getKor() {
return kor;
}
public int getEng() {
return eng;
}
public int getMath() {
return math;
}
@Override
public String toString() {
return "Score [name=" + name + ", kor=" + kor + ", eng=" + eng + ", math=" + math + "]\n";
}
}
Collections μ λ ¬
1. ArrayList > μμ μ‘΄μ¬ > μ λ ¬ O
2. HashMap > μμ λ―Έμ‘΄μ¬ > μ λ ¬ X
3. Queue > μμ μ‘΄μ¬ > μ λ ¬ X (λ€μ΄μ¨ μμκ° μ€μν¨)
4. Stack > μμ μ‘΄μ¬ > μ λ ¬ X (λ€μ΄μ¨ μμκ° μ€μν¨)
5. HashSet > μμ λ―Έμ‘΄μ¬ > μ λ ¬ X
보ν΅μ μ€λ¦μ°¨μ μ λ ¬ μ Collections.sort()λ₯Ό μ¬μ©νλ€.
μ¬μ©μ μ μ μ λ ¬μ΄ νμνλ€λ©΄ Comparatorμμ ꡬννλ€.
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add((int) (Math.random() * 100)); // 0 ~ 99
}
// Collections.sort(list); // = Arrays.sort() μ€λ¦μ°¨μ
// Collections.sort(list, new Comparator<Integer>() { // λ΄λ¦Όμ°¨μ
// @Override
// public int compare(Integer o1, Integer o2) {
// return o2 - o1;
// }
// });
// μ€λ¦μ°¨μ -> Collections.sort()μ¬μ©, κ·Έ μΈ μ λ ¬ -> list.sort()μ¬μ© μΆμ²
list.sort(new Comparator<Integer>() { // 무쑰건 Comparator ꡬνν΄μΌ ν¨.
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return o1 - o2;
}
});
=> λ°°μ΄μ μ κ·Ό -> μκ° λ³΅μ‘λ : O(1) -> λ°°μ΄μ μμ μ£Όμκ°κ³Ό μΈλ±μ€λ₯Ό μ΄μ©ν λ¨μ κ³μ°μΌλ‘ νλ²μ μ£Όμλ₯Ό μ°Ύμκ°λ€.
TreeSet κ³ μ κΈ°λ₯
set2.first(); //μμ κ°
set2.last(); // λ κ°
set2.headSet(30); // νλΌλ―Έν°λ³΄λ€ μμ κ°λ€
set2.tailSet(30); // νλΌλ―Έν°λ³΄λ€ ν° κ°λ€
set2.subSet(20, 40) // ν΄λΉ λ²μ λ΄μ κ°λ€
setμ ArrayListλ‘ λ§λ€ μ μλ€.
ArrayList<Integer> list = new ArrayList<>(set2);
TreeMap
map.firstKey(); // 첫λ²μ§Έ ν€
map.lastKey(); // λ§μ§λ§ ν€
map.headMap("m"); // νλΌλ―Έν°λ³΄λ€ μμ ν€+κ°λ€
map.tailMap("m"); // νλΌλ―Έν°λ³΄λ€ ν° ν€+κ°λ€
map.subMap("r", "y") // νλΌλ―Έν°λ€ μ€κ°μ ν€+κ°λ€
HashMap > ν€/κ° μ°κ΄ λ°°μ΄μ΄ νμν λ *
TreeMap > HashMap + μ λ ¬
HashTable => HashMapκ³Ό κ±°μ λΉμ·νλ μ μμ. Thread λΆλΆμμ μ‘°κΈ λ€λ₯΄λ€.
Properties > JSON, XML => μ μμ.
μΈν°νμ΄μ€ λ³μ = λλ€μ;
ex) MyInterface m1 = () -> {};
(맀κ°λ³μ) -> {μ€νμ½λ}
μλ°μ λ©μλμ λ€λ₯Έ νν
a. (맀κ°λ³μ): λ©μλμ 맀κ°λ³μ 리μ€νΈμ λμΌ
b. ->: νμ΄ν(Arrow), μ½λλΈλ νΈμΆ μν
c. {μ€νμ½λ}: λ©μλμ ꡬνλΆμ λμΌ
μ΄λ»κ² μ§νλμ΄μΌ νλμ§ μ€λͺ μ λ€μλ€. 첫 λ²μ§Έ νλ‘μ νΈμ μ£Όμ λ₯Ό λ Όμνλ€.