Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 아웃풋법칙
- 칭기즈칸의 위대한 장군 수부타이
- 모두가 기다리는 사람
- kubernetes
- 이펙티브 자바
- ESG
- 과제의 분리
- Infresh
- 레퍼런스 복사
- node
- 공헌감
- HTML
- 뉴 컨피던스
- try width resources
- 부자의그릇
- CSS
- try-with-resources
- 수부타이
- 히든 스토리
- colllection
- sentry
- 참조 계수
- 쿠버네티스
- 월칙
- java
- 비메모리 자원
- apache kafka
- 도파민형 인간
- Container
- docker
Archives
- Today
- Total
Hi
Java, 객체(class)를 정렬할 수 있게 하려면 본문
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
// User를 정렬 가능하게 만들고 싶다.
// 1. Comparable 인터페이스를 구현해야 한다.
// class User implements Comparable<User> {
class User {
private String name;
private int age;
String getName() {
return name;
}
int getAge() {
return age;
}
User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
// return this.name + "(" + this.age + ")";
return String.format("%s(%d)", name, age);
}
static List<User> data() {
return Arrays.asList(
new User("허", 28),
new User("공", 23),
new User("심", 26),
new User("안", 26),
new User("홍", 24),
new User("이", 25),
new User("이", 22),
new User("홍", 22),
new User("이", 22),
new User("구", 22),
new User("임", 22)
);
}
// 아래 처럼 사용하는 것은 불편하다.
// 1. 반드시 클래스의 설계자가 비교 가능하도록
// 만들어주어야 한다.
// 2. 사용자마다 다른 정책으로 비교할 수 없다.
// => 정책을 분리해서 외부에서 결정할 수 있도록 만들어주자.
// @Override
// public int compareTo(User o) {
// // return o.name.compareTo(name);
// return name.compareTo(o.name);
// }
}
public class Java0319 {
public static void main(String[] args) {
List<User> users = User.data();
// User를 어떤 기준으로 정렬할 것인가
// Collections.sort(users);
Collections.sort(users, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return Integer.compare(o1.getAge(), o2.getAge());
}
});
// 선언적 프로그래밍 - Java
// 1. 코드의 가독성이 높다.
// 2. 실수가 적다.
// 3. 클래스의 설계자가 비교에 대한 기능을 제공하지 않아도 된다.
// Collections.sort(users,
// Comparator.comparing(User::getAge));
Collections.sort(users,
Comparator.comparing(User::getAge));
for (User e : users) {
System.out.println(e);
}
}
}
'Programming > Java' 카테고리의 다른 글
functionalInterface (0) | 2018.04.09 |
---|---|
Collection / Container (0) | 2018.04.04 |
자료구조 (0) | 2018.04.02 |
hashCode / equals (0) | 2018.04.02 |
Reflection (0) | 2018.04.02 |