티스토리 뷰
● 도입
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
}
반환하는 int가
1. 음수면 o1 < o2
2. 0 이면 o1 = o2
3. 양수면 o1 > o2
● 실습
package com.fastcampus.functionalprogramming.chapter4.model;
public class User {
private int id;
private String name;
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User [id=" + id + ", " + (name != null ? "name=" + name : "") + "]";
}
}
package com.fastcampus.functionalprogramming.chapter4;
import java.util.ArrayList;
import java.util.List;
import com.fastcampus.functionalprogramming.chapter4.model.User;
public class Chapter4Section5 {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
users.add(new User(3, "Alice"));
users.add(new User(1, "Charlie"));
users.add(new User(5, "Bob"));
System.out.println(users);
}
}
결과값 : [User [id=3, name=Alice], User [id=1, name=Charlie], User [id=5, name=Bob]]
[sort method 구조]
public static <T> void sort(List<T> list, Comparator<? super T> c) {
list.sort(c);
}
- List와 Comparator를 넘기면 알아서 sort 해준다.
1. 유저들을 id 순서대로 sort 해보자
package com.fastcampus.functionalprogramming.chapter4;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.fastcampus.functionalprogramming.chapter4.model.User;
public class Chapter4Section5 {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
users.add(new User(3, "Alice"));
users.add(new User(1, "Charlie"));
users.add(new User(5, "Bob"));
System.out.println("sort 전");
System.out.println(users);
// id 순서대로 sort
Comparator<User> idComparator = (User u1, User u2) -> {
return u1.getId() - u2.getId();
};
Collections.sort(users, idComparator);
System.out.println("id sort 후");
System.out.println(users);
}
}
2. 유저들을 name 순서대로 sort 해보자
package com.fastcampus.functionalprogramming.chapter4;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.fastcampus.functionalprogramming.chapter4.model.User;
public class Chapter4Section5 {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
users.add(new User(3, "Alice"));
users.add(new User(1, "Charlie"));
users.add(new User(5, "Bob"));
System.out.println("sort 전");
System.out.println(users);
// 이름 순서대로 sort
// compareTo() : string을 비교할 때 사용(알파벳 순으로 정렬)
// Comparator를 따로 만들지 않고 생성과 동시에 argument로 넣어버린다.
Collections.sort(users, (u1, u2) -> u1.getName().compareTo(u2.getName()));
System.out.println("name sort 후");
System.out.println(users);
}
}
- 같은 sort method 일지라도 넣어주는 Comparator에 따라 다양한 방법으로 정렬할 수 있다.
'Backend > Java8' 카테고리의 다른 글
#12 Method Reference2 (0) | 2022.09.24 |
---|---|
#11 Method Reference - 기존에 만들어놓은 Method를 지정하는 방법 (0) | 2022.09.23 |
#9 Predicate (1) | 2022.09.21 |
#8 BiConsumer (1) | 2022.09.20 |
#7 Consumer : Supplier와 정반대 (0) | 2022.09.19 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Phaser
- 운영체제
- Advanced Stream
- MongoDB
- node.js
- git
- 프로그래머스
- spring
- nosql
- SpringBoot
- 빅데이터
- SQL
- 메모리
- 코딩테스트
- 프로세스
- DART
- Phaser3
- 빅데이터 분석기사
- OS
- API
- 코테
- 알고리즘
- Java8
- 자료구조
- db
- Stream
- Spring Boot
- java
- jpa
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함