Skip to content

Commit 2dd55a2

Browse files
日期排序
1 parent 4638705 commit 2dd55a2

3 files changed

Lines changed: 130 additions & 59 deletions

File tree

‎src/main/java/com/bean/Order.java‎

Lines changed: 8 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,20 @@
11
package com.bean;
22

3-
import lombok.extern.java.Log;
3+
import lombok.Data;
44

5-
/**
6-
* Created by lenovo on 十一月
7-
*/
5+
import java.util.Date;
86

7+
@Data
98
public class Order {
10-
private String phoneNumber;
11-
private String doneCode;
12-
private String date;
139

14-
public Order(String phoneNumber, String doneCode, String date) {
15-
this.phoneNumber = phoneNumber;
16-
this.doneCode = doneCode;
17-
this.date = date;
18-
}
10+
private String weight;
1911

20-
public String getPhoneNumber() {
21-
return phoneNumber;
22-
}
12+
private double price;
2313

24-
public void setPhoneNumber(String phoneNumber) {
25-
this.phoneNumber = phoneNumber;
26-
}
14+
private int age ;
2715

28-
public String getDoneCode() {
29-
return doneCode;
30-
}
16+
private String dateStr;
3117

32-
public void setDoneCode(String doneCode) {
33-
this.doneCode = doneCode;
34-
}
18+
private Date createTime;
3519

36-
public String getDate() {
37-
return date;
38-
}
39-
40-
public void setDate(String date) {
41-
this.date = date;
42-
}
43-
44-
@Override
45-
public boolean equals(Object o) {
46-
if (this == o) {
47-
return true;
48-
}
49-
if (o == null || getClass() != o.getClass()) {
50-
return false;
51-
}
52-
53-
Order order = (Order) o;
54-
55-
if (!phoneNumber.equals(order.phoneNumber)) {
56-
return false;
57-
}
58-
if (!doneCode.equals(order.doneCode)) {
59-
return false;
60-
}
61-
return date.equals(order.date);
62-
}
63-
64-
@Override
65-
public int hashCode() {
66-
int result = phoneNumber.hashCode();
67-
result = 31 * result + doneCode.hashCode();
68-
result = 31 * result + date.hashCode();
69-
return result;
70-
}
7120
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.java8.stream;
2+
3+
4+
import com.bean.Order;
5+
6+
import java.time.LocalDateTime;
7+
import java.time.ZoneId;
8+
import java.time.format.DateTimeFormatter;
9+
import java.util.*;
10+
import java.util.stream.Collectors;
11+
12+
import static java.util.Comparator.naturalOrder;
13+
14+
public class SortedDateDemo {
15+
16+
17+
/**
18+
* nullsFirst()表示如果属性为null,就放到最前面。
19+
* nullsFirst()表示如果属性为null,就放到最前面。
20+
* naturalOrder()表示自然排序(一般是升序),
21+
* Comparator.reverseOrder()表示 降序。
22+
*
23+
*
24+
*/
25+
public void orderSort() {
26+
Order order1 =new Order();
27+
order1.setDateStr("2021-10-01 00:00:00");
28+
order1.setCreateTime(toDate("2022-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss"));
29+
30+
Order order2 =new Order();
31+
order2.setDateStr("2021-10-01 00:00:00");
32+
order2.setCreateTime(toDate("2022-02-01 00:00:00", "yyyy-MM-dd HH:mm:ss"));
33+
34+
Order order3 =new Order();
35+
order3.setDateStr("2021-10-03 00:00:00");
36+
order3.setCreateTime(toDate("2022-02-01 00:00:00", "yyyy-MM-dd HH:mm:ss"));
37+
38+
Order order4 =new Order();
39+
order4.setDateStr(null);
40+
order4.setCreateTime(null);
41+
42+
List<Order> list= new ArrayList<>();
43+
list.add(order1);
44+
list.add(order2);
45+
list.add(order3);
46+
list.add(order4);
47+
48+
//naturalOrder()表示自然排序(一般是升序),Comparator.nullsLast表示如果属性为null,就放到最后面
49+
Comparator<Order> comparator = Comparator.comparing(Order::getDateStr, Comparator.nullsLast(naturalOrder()) );
50+
List<Order> orderList = list.stream().sorted(comparator).collect(Collectors.toList());
51+
// System.out.println("orderList:"+orderList);
52+
53+
//Comparator.reverseOrder表示 降序,nullsFirst表示如果属性为null,就放到最前面。
54+
Comparator<Order> comparator2 = Comparator.comparing(Order::getDateStr, Comparator.nullsFirst(Comparator.reverseOrder()));
55+
List<Order> orderList2 = list.stream().sorted(comparator2).collect(Collectors.toList());
56+
System.out.println("orderList2:"+ orderList2);
57+
58+
//先按第一个字段降序,再按第二个字段降序,如果属性为null,就放到最后面。
59+
Comparator<Order> comparator3 = Comparator.comparing(Order::getDateStr, Comparator.nullsLast(Comparator.reverseOrder()))
60+
.thenComparing(Order::getCreateTime, Comparator.nullsLast(Comparator.reverseOrder()));
61+
List<Order> orderList3 = list.stream().sorted(comparator3).collect(Collectors.toList());
62+
// System.out.println("orderList3:"+ orderList3);
63+
}
64+
65+
public static Date toDate(String dateTimeStr, String pattern) {
66+
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
67+
LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter);
68+
return Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());
69+
}
70+
71+
72+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package test.com.java8.stream;
2+
3+
import com.java8.stream.SortedDateDemo;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
import org.junit.Before;
7+
import org.junit.After;
8+
9+
/**
10+
* SortedDemo Tester.
11+
*
12+
* @author <Authors name>
13+
* @since <pre>3 , 9, 2023</pre>
14+
* @version 1.0
15+
*/
16+
public class SortedDateDemoTest {
17+
18+
@Before
19+
public void before() throws Exception {
20+
}
21+
22+
@After
23+
public void after() throws Exception {
24+
}
25+
26+
/**
27+
*
28+
* Method: orderSort()
29+
*
30+
*/
31+
@Test
32+
public void testOrderSort() throws Exception {
33+
//TODO: Test goes here...
34+
SortedDateDemo sortedDateDemo = new SortedDateDemo();
35+
sortedDateDemo.orderSort();
36+
Assert.assertNotNull(sortedDateDemo);
37+
}
38+
39+
/**
40+
*
41+
* Method: toDate(String dateTimeStr, String pattern)
42+
*
43+
*/
44+
@Test
45+
public void testToDate() throws Exception {
46+
//TODO: Test goes here...
47+
}
48+
49+
50+
}

0 commit comments

Comments
 (0)