1. ์ธํฐํ์ด์ค
๋๋ค ํจ์๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๋ ค๋ฉด ๋จผ์ ์ธํฐํ์ด์ค๊ฐ ๋ฌด์์ธ์ง ์ดํดํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ์ ๊ธฐ์ตํฉ์๋ค.
์ธํฐํ์ด์ค ๋ ํด๋์ค ๊ฐ๋ ์ ๋ณํ์ ๋๋ค. ์ฌํ๊ฒ ์๋ฆฐ ํด๋์ค๋ผ๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํด๋์ค์ ๋ฌ๋ฆฌ ์ธํฐํ์ด์ค๋ ์์ฒด ๋ณ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค(์ ์ ๋ณ์ ์ ์ธ). ์ ํ์ด ์ธํฐํ์ด์ค์ธ ๊ฐ์ฒด๋ ๋ง๋ค ์ ์์ต๋๋ค.
- ํด๋์ค์ ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.
- ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์:
interface Runnable
{
void run();
}
์ธํฐํ์ด์ค ์ฌ์ฉ
๊ทธ๋ ๋ค๋ฉด ์ ์ธํฐํ์ด์ค๊ฐ ํ์ํ ๊น์? ์ธํฐํ์ด์ค๋ ์์๊ณผ ํจ๊ป๋ง ์ฌ์ฉ๋ฉ๋๋ค. ๋์ผํ ์ธํฐํ์ด์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์ํด ์์๋ ์ ์์ต๋๋ค. ๋๋ ๋งํ๋ฏ์ด โ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค .
ํด๋์ค๊ฐ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ ์ธํฐํ์ด์ค์ ์ํด ์ ์ธ๋์์ง๋ง ๊ตฌํ๋์ง ์์ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค. ์:
interface Runnable
{
void run();
}
class Timer implements Runnable
{
void run()
{
System.out.println(LocalTime.now());
}
}
class Calendar implements Runnable
{
void run()
{
var date = LocalDate.now();
System.out.println("Today: " + date.getDayOfWeek());
}
}
ํด๋์ค ๋ ์ธํฐํ์ด์ค๋ฅผ Timer
๊ตฌํํ๋ฏ๋ก ์ธํฐํ์ด์ค Runnable
์ ์๋ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๋ด๋ถ์์ ์ ์ธ Runnable
ํ๊ณ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ฆ, ๋ฉ์๋ ๋ณธ๋ฌธ์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์์
๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค Calendar
.
๊ทธ๋ฌ๋ ์ด์ Runnable
๋ณ์๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค Runnable
.
์:
์ํธ | ๋ฉ๋ชจ |
---|---|
|
run() ํด๋์ค ์ ๋ฉ์๋๊ฐ ํธ์ถ Timer ๋ฉ๋๋ค ํด๋์ค ์ ๋ฉ์๋๊ฐ ํธ์ถ ๋ฉ๋๋ค ํด๋์ค ์ ๋ฉ์๋๊ฐ ํธ์ถ ๋ฉ๋๋ค run() Timer run() Calendar |
ํด๋น ์ ํ์ด ๊ฐ์ฒด์ ์กฐ์ ํด๋์ค ์ค ํ๋์ธ ํ ํญ์ ๋ชจ๋ ์ ํ์ ๋ณ์์ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. Timer
๋ฐ ํด๋์ค ์ ๊ฒฝ์ฐ ๋ฐ ์ Calendar
๊ฐ์ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค .Object
Runnable
๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ๋ณ์์ ํ ๋นํ๋ฉด ํด๋์ค Object
์์ ์ ์ธ๋ ๋ฉ์๋๋ง ํธ์ถํ ์ ์์ต๋๋ค Object
. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ๋ณ์์ ํ ๋นํ๋ฉด Runnable
ํด๋น ์ ํ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค Runnable
.
์ 2:
ArrayList<Runnable> list = new ArrayList<Runnable>();
list.add (new Timer());
list.add (new Calendar());
for (Runnable element: list)
element.run();
Timer
์ด ์ฝ๋๋ ๋ฐ Calendar
๊ฐ์ฒด์ ์๋ฒฝํ๊ฒ ์ ์๋ํ๋ ์คํ ๋ฉ์๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ํฉ๋๋ค . ๋ฐ๋ผ์ ๊ทธ๋ค์ ๋ถ๋ฅด๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๋ฐฉ๊ธ ๋ ํด๋์ค์ run() ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ค๋ฉด ๊ทธ๋ ๊ฒ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๋ ํด๋์ค๋ฅผ ํธ์ถํ ์ ์์์ ๊ฒ์
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Runnable
์ธํฐํ์ด์ค๋ run ๋ฉ์๋๋ฅผ ๋ฃ๋ ๊ณณ์ผ๋ก๋ง โโ์ฌ์ฉ๋ฉ๋๋ค.
2. ๋ถ๋ฅ
์ข ๋ ์ค์ฉ์ ์ธ ๊ฒ์ผ๋ก ๋์ด ๊ฐ์๋ค. ์๋ฅผ ๋ค์ด ๋ฌธ์์ด ์ ๋ ฌ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์์ด ๋ชจ์์ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํด Java์๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฅญํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.Collections.sort(collection);
์ด ์ ์ ๋ฉ์๋๋ ์ ๋ฌ๋ ์ปฌ๋ ์ ์ ์ ๋ ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ฌ ๊ณผ์ ์์ ์์๋ฅผ ๊ต์ฒดํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์ดํดํ๊ธฐ ์ํด ์์์ ์๋ณ ๋น๊ต๋ฅผ ์ํํฉ๋๋ค.
compareTo
์ ๋ ฌํ๋ ๋์ ์ด๋ฌํ ๋น๊ต๋ ๋ชจ๋ ํ์ค ํด๋์ค์ ์๋ ( Integer
, String
, ... ) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค.
Integer ํด๋์ค์ compareTo() ๋ฉ์๋๋ ๋ ์ซ์์ ๊ฐ์ ๋น๊ตํ๋ ๋ฐ๋ฉด String ํด๋์ค์ compareTo() ๋ฉ์๋๋ ๋ฌธ์์ด์ ์ํ๋ฒณ ์์๋ฅผ ํ์ธํฉ๋๋ค.
๋ฐ๋ผ์ ์ซ์ ๋ชจ์์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ณ ๋ฌธ์์ด ๋ชจ์์ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๋์ฒด ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
ํ์ง๋ง ๋ฌธ์์ด์ ์ํ๋ฒณ์์ด ์๋๋ผ ๊ธธ์ด์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ซ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํฉ๋๊น?
์ด๋ฌํ ์ํฉ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํด๋์ค์๋ ๋ ๊ฐ์ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ Collections
๋ค๋ฅธ ๋ฉ์๋๊ฐ ์์ต๋๋ค .sort()
Collections.sort(collection, comparator);
์ฌ๊ธฐ์ comparator๋ ์ ๋ ฌ ์์ ์ค์ ์ปฌ๋ ์ ์ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ํน์ ๊ฐ์ฒด์ ๋๋ค . ๋น๊ต๊ธฐ๋ผ๋ ์ฉ์ด๋ "๋น๊ตํ๋ค"๋ฅผ ์๋ฏธํ๋ compare ์์ ํ์๋ ์์ด ๋จ์ด comparator ์์ ์ ๋ํ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ํน๋ณํ ๋ฌผ๊ฑด์ ๋ฌด์์ผ๊น์?
Comparator
์ํธ ์์ฉ
์, ๋ชจ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. sort()
๋ฉ์๋์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.Comparator<T>
์ฌ๊ธฐ์ T๋ ์ปฌ๋ ์
์ ์๋ ์์์ ์ ํ์ ๋ํ๋ด๋ ์ ํ ๋งค๊ฐ๋ณ์ ์ด๋ฉฐ ๋จ์ผ ๋ฉ์๋๋ฅผ Comparator
๊ฐ๋ ์ธํฐํ์ด์ค์
๋๋ค.int compare(T obj1, T obj2);
์ฆ, ๋น๊ต๊ธฐ ๊ฐ์ฒด๋ Comparator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํด๋์ค์ ๊ฐ์ฒด์ ๋๋ค. Comparator ์ธํฐํ์ด์ค๋ ๋งค์ฐ ๊ฐ๋จํด ๋ณด์ ๋๋ค.
public interface Comparator<Type>
{
public int compare(Type obj1, Type obj2);
}
๋ฉ์๋ compare()
๋ ์ ๋ฌ๋ ๋ ์ธ์๋ฅผ ๋น๊ตํฉ๋๋ค.
๋ฉ์๋๊ฐ ์์๋ฅผ ๋ฐํํ๋ฉด obj1 < obj2
. ๋ฉ์๋๊ฐ ์์๋ฅผ ๋ฐํํ๋ฉด obj1 > obj2
. ๋ฉ์๋๊ฐ 0์ ๋ฐํํ๋ฉด obj1 == obj2
.
๋ค์์ ๋ฌธ์์ด์ ๊ธธ์ด๋ก ๋น๊ตํ๋ ๋น๊ต๊ธฐ ๊ฐ์ฒด์ ์์ ๋๋ค.
public class StringLengthComparator implements Comparator<String>
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
}
StringLengthComparator
์์
์ฝ๋
๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋น๊ตํ๋ ค๋ฉด ํ ๊ธธ์ด์์ ๋ค๋ฅธ ๊ธธ์ด๋ฅผ ๋บ๋๋ค.
๋ฌธ์์ด์ ๊ธธ์ด๋ณ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์ ์ฒด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public class Solution
{
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
Collections.addAll(list, "Hello", "how's", "life?");
Collections.sort(list, new StringLengthComparator());
}
}
class StringLengthComparator implements Comparator<String>
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
}
3. ๊ตฌ๋ฌธ ์คํ
์ด ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค๊ณ ์๊ฐํ์ญ๋๊น? ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ผ์ธ์ ๋จ ํ๋๋ฟ์
๋๋ค โ obj1.length() - obj2.length();
.
๊ทธ๋ฌ๋ ์ฝ๋๋ ๋ฉ์๋ ์ธ๋ถ์ ์กด์ฌํ ์ ์์ผ๋ฏ๋ก ๋ฉ์๋๋ฅผ ์ถ๊ฐํด์ผ ํ๊ณ compare()
๋ฉ์๋๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ ํด๋์ค๋ฅผ ์ถ๊ฐํด์ผ ํ์ต๋๋ค โ StringLengthComparator
. ๊ทธ๋ฆฌ๊ณ ๋ณ์์ ์ ํ๋ ์ง์ ํด์ผ ํฉ๋๋ค... ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ง๋ง ์ด ์ฝ๋๋ฅผ ๋ ์งง๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํ ๊ตฌ๋ฌธ ์คํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ ๊ตญ์!
์ต๋ช ๋ด๋ถ ํด๋์ค
๋ฉ์๋ ๋ด์์ ๋ฐ๋ก ๋น๊ต๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ ์ main()
์์ผ๋ฉฐ ์ปดํ์ผ๋ฌ๊ฐ ๋๋จธ์ง ์์
์ ์ํํฉ๋๋ค. ์:
public class Solution
{
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
Collections.addAll(list, "Hello", "how's", "life?");
Comparator<String> comparator = new Comparator<String>()
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
};
Collections.sort(list, comparator);
}
}
Comparator
๋ช
์์ ์ผ๋ก ํด๋์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค ! ์ปดํ์ผ๋ฌ๋ ์๋์ผ๋ก ์์ฑํ๊ณ ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋น๊ตํด๋ณด์:
Comparator<String> comparator = new Comparator<String>()
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
};
Comparator<String> comparator = new StringLengthComparator();
class StringLengthComparator implements Comparator<String>
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
}
StringLengthComparator
์์
๋ ๊ฐ์ง ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋์ผํ ์ฝ๋ ๋ธ๋ก์ ๋ํ๋ด๊ธฐ ์ํด ๋์ผํ ์์์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ ์ฐจ์ด๋ ์ค์ ๋ก ์์ฃผ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ฒซ ๋ฒ์งธ ์ฝ๋ ๋ธ๋ก์ ๋ง๋๋ฉด ํด๋นํ๋ ๋ ๋ฒ์งธ ์ฝ๋ ๋ธ๋ก์ ์์ฑํ๊ณ ํด๋์ค์ ์์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
4. Java์ ๋๋ค ์
์ฝ๋์์ ์ต๋ช ์ ๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ ๋ธ๋ก์ด ์์ต๋๋ค.
Comparator<String> comparator = new Comparator<String>()
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
};
์ฌ๊ธฐ์๋ ๋ณ์ ์ ์ธ๊ณผ ์ต๋ช ํด๋์ค ์์ฑ์ ๊ฒฐํฉํฉ๋๋ค. ๊ทธ๋ฌ๋์ด ์ฝ๋๋ฅผ ๋ ์งง๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Comparator<String> comparator = (String obj1, String obj2) ->
{
return obj1.length() โ obj2.length();
};
์ฌ๊ธฐ์๋ ์์์ ํด๋์ค ์ ์ธ๋ฟ ์๋๋ผ ๋ณ์ ์์ฑ๋ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฏธ์ฝ๋ก ์ด ํ์ํฉ๋๋ค.
์ด์ ๊ฐ์ ํ๊ธฐ๋ฒ์ ๋๋ค ์์ด๋ผ๊ณ ํฉ๋๋ค .
์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋์์ ์ด์ ๊ฐ์ ํ๊ธฐ๋ฒ์ ๋ฐ๊ฒฌํ๋ฉด ์ต๋ช ์ ๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ธํ ๋ฒ์ ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋๋ค ์์ ์์ฑํ ๋ ํด๋์ค ์ด๋ฆ๋ฟ๋ง ์๋๋ผ ๋ฉ์๋ ์ด๋ฆ๋ ์๋ตํ์ต๋๋ค .Comparator<String>
int compare()
์ปดํ์ผ์ ๋ฉ์๋๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค . ๋๋ค ์์ ๋จ์ผ ๋ฉ์๋๊ฐ ์๋ ์ธํฐํ์ด์ค์ ๋ํด์๋ง ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค . ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด ๊ท์น์ ์ฐํํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง OOP๋ฅผ ๋ ๊น์ด ์ฐ๊ตฌํ๊ธฐ ์์ํ๋ฉด ๊ทธ๊ฒ์ ๋ํด ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค(์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค).
์์ธํ ๋ฒ์ ์ ์ฝ๋๋ฅผ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋๋ค ์์ ์์ฑํ ๋ ์๋ตํ ์ ์๋ ๋ถ๋ถ์ ํ์์ผ๋ก ํ์ํ๊ฒ ์ต๋๋ค.
Comparator<String> comparator = new Comparator<String>()
{
public int compare (String obj1, String obj2)
{
return obj1.length() โ obj2.length();
}
};
์ค์ํ ๊ฑด ํ๋๋ ๋น ๋จ๋ฆฌ์ง ์์ ๊ฒ ๊ฐ๋ค. ์ค์ ๋ก Comparator
์ธํฐํ์ด์ค์ ๋ฉ์๋๊ฐ ํ๋๋ง ์๋ ๊ฒฝ์ฐ compare()
์ปดํ์ผ๋ฌ๋ ๋๋จธ์ง ์ฝ๋์์ ํ์์ผ๋ก ํ์๋ ์ฝ๋๋ฅผ ์์ ํ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
์ ๋ ฌ
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด์ ๋ค์๊ณผ ๊ฐ์ ์ ๋ ฌ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Comparator<String> comparator = (String obj1, String obj2) ->
{
return obj1.length() โ obj2.length();
};
Collections.sort(list, comparator);
๋๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์๋ ์์ต๋๋ค.
Collections.sort(list, (String obj1, String obj2) ->
{
return obj1.length() โ obj2.length();
}
);
comparator
๋ณ์ ์ ํ ๋น๋ ๊ฐ์ผ๋ก ๋ณ์๋ฅผ ์ฆ์ ๋์ฒดํ์ต๋๋ค comparator
.
์ ํ ์ถ๋ก
ํ์ง๋ง ๊ทธ๊ฒ ๋ค๊ฐ ์๋๋๋ค. ์ด ์์ ์ ์ฝ๋๋ ํจ์ฌ ๋ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ์ฒซ์งธ, ์ปดํ์ผ๋ฌ๋ obj1
๋ฐ obj2
๋ณ์๊ฐ Strings
. ๋์งธ, ๋ฉ์๋ ์ฝ๋์ ๋ช
๋ น์ด ํ๋๋ง ์๋ ๊ฒฝ์ฐ ์ค๊ดํธ์ return ๋ฌธ๋ ์๋ตํ ์ ์์ต๋๋ค.
๋จ์ถ ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Comparator<String> comparator = (obj1, obj2) ->
obj1.length() โ obj2.length();
Collections.sort(list, comparator);
๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋์ comparator
ํด๋น ๊ฐ์ ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ค์ ๋ฒ์ ์ ์ป์ต๋๋ค.
Collections.sort(list, (obj1, obj2) -> obj1.length() โ obj2.length() );
๊ธ์, ๋น์ ์ ๊ทธ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ธ์? ๋ถํ์ํ ์ ๋ณด๊ฐ ์๋ ๋จ ํ ์ค์ ์ฝ๋ โ ๋ณ์์ ์ฝ๋๋ง ์์ต๋๋ค. ์งง๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค! ์๋๋ฉด ์์ต๋๊น?
5. ์๋ ๋ฐฉ์
์ค์ ๋ก ์ฝ๋๋ฅผ ํจ์ฌ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์ค์ ๋ ์์ธํ ์ค๋ช ํฉ๋๋ค.
๋จ์ผ ๋ฉ์๋์ ํจ๊ป ์ธํฐํ์ด์ค ์ ํ์ ์ฌ์ฉํ๋ ๋๋ค ์์ ์์ฑํ ์ ์์ต๋๋ค .
์๋ฅผ ๋ค์ด ์ฝ๋์์ ๋ฉ์๋์ ์๋ช
์ด ๋ค์๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค ํํ์์ ์์ฑํ ์ ์์ต๋๋ค .Collections.sort(list, (obj1, obj2) -> obj1.length() - obj2.length());
sort()
sort(Collection<T> colls, Comparator<T> comp)
์ฝ๋ ์
์ ์ ๋ ฌ ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ์ ๋ ArrayList<String>
์ปดํ์ผ๋ฌ๋ ๋ ๋ฒ์งธ ์ธ์์ ์ ํ์ด ์์ ํ์ธํ ์ ์์์ต๋๋ค . ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ผ๋ก๋ถํฐ ์ด ์ธํฐํ์ด์ค๋ ๋จ์ผ ๋ฉ์๋๋ฅผ ๊ฐ๋๋ค๋ ๊ฒฐ๋ก ์ ๋ด๋ ธ์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๊ธฐ์ ์
๋๋ค.Comparator<String>
int compare(String obj1, String obj2)
GO TO FULL VERSION