---
# System prepended metadata

title: '[Java] SORT 排序'
tags: [sql, Java]

---

# [Java] SORT 排序
###### tags: `Java` `sql` 

## Collections.sort

```=java
import java.util.Comparator;

List<Student> list = Arrays.asList(s1, s2, null, s3);
Collections.sort(list, Comparator.nullsLast(Comparator.comparing(Student::getName)));
```
參考資料: [Java Comparator.nullsLast](https://www.concretepage.com/java/java-8/java-comparator-nullslast)
[Comparator nullsLast() method in Java with examples](https://www.geeksforgeeks.org/comparator-nullslast-method-in-java-with-examples/)

## Sort、Sort.Order
- Sort
```=java
import org.springframework.data.domain.Sort;

Sort sort = Sort.by(Sort.Direction.DESC,"id");
sort.and(Sort.by(Sort.Direction.ASC,"name"));
```
- Sort.Order
```=java
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;

Sort.Order order1 = Sort.Order.desc("id").nullsLast();
Sort.Order order2 = Sort.Order.asc("name").nullsLast();
Sort sort = Sort.by(order1, order2);
```
```=java!
Sort sort = Sort.by(new Sort.Order(Sort.Direction.DESC, "year", Sort.NullHandling.NULLS_LAST))
```

## Stream.sorted() 
搭配 `Comparator.comparing` 可實現更複雜的排序方法




[肉豬: Java 8 使用Stream.sorted()對List物件進行排序範例](https://matthung0807.blogspot.com/2019/07/java-8-steamsortedlist.html)
[【JDK8】排序策略的實作](https://openhome.cc/Gossip/CodeData/JDK8/Sort.html)