sách gpt4 ăn đã đi

Java triển khai sắp xếp giao diện có thể so sánh, thứ tự tăng dần, thứ tự giảm dần, hồi tưởng

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 28 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này Java triển khai việc sắp xếp giao diện So sánh, thứ tự tăng dần, thứ tự giảm dần và hồi tưởng được tác giả sưu tầm và sắp xếp. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Vì mình cần sắp xếp danh sách kết quả truy vấn trong quá trình phát triển dự án nên thứ tự ở đây dựa trên thời gian tạo của từng đối tượng theo thứ tự giảm dần. Lời giải thích của tôi không sâu sắc, tôi chỉ nhận ra mục đích. Nếu bạn muốn hiểu nguyên tắc, bạn cần tham khảo thông tin sâu hơn.

1. Hiệu quả đạt được.

Java triển khai sắp xếp giao diện có thể so sánh, thứ tự tăng dần, thứ tự giảm dần, hồi tưởng

2. Tạo các đối tượng được sắp xếp.

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
bưu kiện com.practice.test.comparable;
nhập khẩu java. util. Ngày;
 
/**
  * Mô tả: Đối tượng được so sánh
  *
  * @author cui
  * @create 2018-12-18 14:07
  */
công cộng lớp học MySortBean thực hiện Có thể so sánh {
   riêng tư Tên chuỗi;
   riêng tư số nguyên tuổi;
   riêng tư Ngày tạoThời gian;
 
 
   công cộng Chuỗi getName() {
     trở lại tên;
   }
 
   công cộng vô hiệu setName(Tên chuỗi) {
     cái này .name = tên;
   }
 
   công cộng số nguyên getAge() {
     trở lại tuổi;
   }
 
   công cộng vô hiệu setAge( số nguyên tuổi) {
     cái này .age = tuổi;
   }
 
   công cộng Ngày getCreateTime() {
     trở lại tạo thời gian;
   }
 
   công cộng vô hiệu setCreateTime(Ngày tạoThời gian) {
     cái này .createTime = createTime;
   }
 
// @Ghi đè
// công khai int compareTo(MySortBean o) {
// nếu (tuổi này>tuổi 0){
// trả về -1;
// }else nếu (tuổi này==tuổi 0){
// trả về 0;
// }
// trả về 1;
// }
     @Ghi đè
     công cộng số nguyên so sánh với(MySortBean o) {
       nếu như ( cái này .createTime.compareTo(o.getCreateTime())> 0 ){
         trở lại - 1 ;
       } khác nếu như ( cái này .createTime.compareTo(o.getCreateTime())== 0 ){
         trở lại 0 ;
       }
       trở lại 1 ;
     }
 
   @Ghi đè
   công cộng Chuỗi toString() {
     trở lại "MySortBean{" +
         "tên='" + tên + '\ '' +
         ", tuổi=" + tuổi +
         '}' ;
   }
}

3. Viết phương pháp kiểm tra.

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
bưu kiện com.practice.test;
nhập khẩu com.practice.test.comparable.MySortBean;
nhập khẩu com.spring.testlist.util.DateUtil;
nhập khẩu org.junit.Test;
nhập khẩu org.junit.runner.RunWith;
nhập khẩu org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
nhập khẩu java. util. ArrayList;
nhập khẩu java. util. Ngày;
nhập khẩu java. util. List;
 
/**
  * mô tả:
  * Kiểm tra so sánh
  *
  * @author cui
  * @create 2018-12-18 14:10
  */
@ChạyVới (SpringJUnit4ClassRunner. lớp học )
công cộng lớp học Kiểm tra So sánh {
 
   @Bài kiểm tra
   công cộng vô hiệu kiểm tra so sánh(){
     MySortBean m1 = mới Loại bỏ
     m1.setAge( 1 );
     m1.setCreateTime(NgàySử dụng.parseDate( "2019-01-21 16:13:18" ));
     MySortBean m2 = mới Loại bỏ
     m2.setAge( 2 );
     m2.setCreateTime(NgàySử dụng.parseDate( "2019-01-23 16:13:18" ));
     MySortBean m3 = mới Loại bỏ
     m3.setAge( 3 );
     m3.setCreateTime(NgàySử dụng.parseDate( "2019-01-22 16:13:18" ));
     MySortBean m4 = mới Loại bỏ
     m4.setAge( 4 );
     m4.setCreateTime(NgàySử dụng.parseDate( "2019-01-24 16:13:18" ));
     MySortBean m5 = mới Loại bỏ
     m5.setAge( 5 );
     m5.setCreateTime(NgàySử dụng.parseDate( "2019-01-25 16:13:18" ));
     Danh sách l = mới Mảng List<>( 5 );
     l.add(m1);
     l.add(m2);
     l.add(m4);
     l.add(m5);
     l.add(m3);
 
     Hệ thống.out.println( "Trước khi sắp xếp:" );
     (MySortBean i:l) {
       System.out.println(DateUtil.formatDate(i.getCreateTime(), "năm-MM-dd HH:mm:ss" ));
     }
     /**
      * Sắp xếp tùy chỉnh
      * Trả về trực tiếp -1 để sắp xếp hồi tưởng và xuất danh sách theo thứ tự ngược lại
      *
      * nếu (o1.getAge()>o2.getAge()){
      * trả về 1;
      * }
      * trả về -1;
      * Đầu ra theo thứ tự tăng dần ở trên
      *
      * nếu (o1.getAge()>o2.getAge()){
      * trả về -1;
      * }
      * trả về 1;
      * Kết quả trên theo thứ tự giảm dần
      *
      *
      */
/* Bộ so sánh bộ so sánh = Bộ so sánh mới() {
       @Ghi đè
       công khai int so sánh (MySortBean o1, MySortBean o2) {
         nếu (o1.getAge()>o2.getAge()){
           trả về -1;
         }
         trả về 1;
       }
     };
     l.sort(bộ so sánh);*/
     l. sắp xếp(MySortBean::compareTo);
     Hệ thống.out.println( "---------" );
     Hệ thống.out.println( "Sau khi sắp xếp:" );
     (MySortBean i:l) {
       System.out.println(DateUtil.formatDate(i.getCreateTime(), "năm-MM-dd HH:mm:ss" ));
     }
   }
}

4. Lớp công cụ định dạng thời gian.

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
bưu kiện com.spring.testlist.util;
nhập khẩu org.apache.commons.lang3.time.DateFormatUtils;
nhập khẩu java. text. ParseException;
nhập khẩu java.text.SimpleDateFormat;
nhập khẩu java.util.Calendar;
nhập khẩu java. util. Ngày;
 
/**
  * Lớp công cụ ngày, kế thừa lớp org.apache.commons.lang.time.DateUtils
  *
  * @author cui
  * @create 2018-10-26 15:30
  **/
công cộng lớp học Ngày sử dụng mở rộng org.apache.commons.lang3.time.DateUtils{
 
     riêng tư tĩnh Chuỗi [] phân tích cú pháp = {
         "năm-tháng-ngày" , "năm-MM-dd HH:mm:ss" , "năm-MM-ngày HH:mm" , "năm-MM" ,
         "năm/tháng/ngày" , "năm/tháng/ngày Giờ:phút:giây" , "năm/tháng/ngày HH:mm" , "năm/tháng" ,
         "năm.tháng.ngày" , "năm.MM.dd HH:mm:ss" , "năm.MM.dd HH:mm" , "năm.MM" };
 
     /**
      * Lấy định dạng chuỗi ngày hiện tại (yyyy-MM-dd)
      */
     công cộng tĩnh Chuỗi getDate() {
       trở lại getDate( "năm-tháng-ngày" );
     }
   /**
    * Nhận định dạng chuỗi ngày hiện tại (yyyyMMdd)
    */
   công cộng tĩnh Chuỗi getSizeDate() {
     trở lại getDate( "năm MMdd" );
   }
 
     /**
      * Lấy mẫu định dạng chuỗi ngày hiện tại (yyyy-MM-dd) có thể là: "yyyy-MM-dd" "HH:mm:ss" "E"
      */
     công cộng tĩnh Chuỗi getDate(Mẫu chuỗi) {
       trở lại Định dạng ngày thángUtils.format( mới Ngày(), mẫu);
     }
 
     /**
      * Lấy định dạng mặc định của mẫu chuỗi ngày (yyyy-MM-dd) có thể là: "yyyy-MM-dd" "HH:mm:ss" "E"
      */
     công cộng tĩnh Định dạng chuỗi Ngày (Ngày, Đối tượng... mẫu) {
       nếu như (ngày == vô giá trị ) {
         trở lại vô giá trị ;
       }
       Định dạng chuỗi Ngày = vô giá trị ;
       nếu như (mẫu != vô giá trị && mẫu.chiều dài > 0 ) {
         formatDate = DateFormatUtils.format(ngày, mẫu[ 0 ].toString());
       } khác {
         formatDate = DateFormatUtils.format(ngày, "năm-tháng-ngày" );
       }
       trở lại định dạngNgày;
     }
 
     /**
      * Lấy chuỗi ngày giờ và chuyển đổi định dạng (yyyy-MM-dd HH:mm:ss)
      */
     công cộng tĩnh Định dạng chuỗi DateTime(Ngày tháng) {
       trở lại formatDate(ngày, "năm-MM-dd HH:mm:ss" );
     }
 
     /**
      * Lấy định dạng chuỗi thời gian hiện tại (HH:mm:ss)
      */
     công cộng tĩnh Chuỗi getTime() {
       trở lại định dạngNgày( mới Ngày(), "H:mm:ss" );
     }
 
     /**
      * Nhận định dạng chuỗi ngày và giờ hiện tại (yyyy-MM-dd HH:mm:ss)
      */
     công cộng tĩnh Chuỗi getDateTime() {
       trở lại định dạngNgày( mới Ngày(), "năm-MM-dd HH:mm:ss" );
     }
 
     /**
      * Lấy định dạng chuỗi năm hiện tại (yyyy)
      */
     công cộng tĩnh Chuỗi getYear() {
       trở lại định dạngNgày( mới Ngày(), "năm" );
     }
 
     /**
      * Nhận định dạng chuỗi tháng hiện tại (MM)
      */
     công cộng tĩnh Chuỗi getMonth() {
       trở lại định dạngNgày( mới Ngày(), "MM" );
     }
 
     /**
      * Lấy định dạng chuỗi trong ngày (dd)
      */
     công cộng tĩnh Chuỗi getDay() {
       trở lại định dạngNgày( mới Ngày(), "đ" );
     }
 
     /**
      * Lấy định dạng chuỗi tuần hiện tại (E) ngày trong tuần
      */
     công cộng tĩnh Chuỗi getWeek() {
       trở lại định dạngNgày( mới Ngày(), "E" );
     }
 
     /**
      * Chuyển đổi chuỗi ngày sang định dạng ngày
      * { "ngày-tháng-năm", "ngày-tháng-năm" "ngày-tháng-năm" "ngày-tháng-năm" "ngày-tháng-năm"
      * "năm/tháng/ngày", "năm/tháng/ngày Giờ:phút:giây", "năm/tháng/ngày Giờ:phút",
      * "năm.MM.dd", "năm.MM.dd HH:mm:ss", "năm.MM.dd HH:mm" }
      */
     công cộng tĩnh Ngày parseDate(Object str) {
       nếu như (chuỗi == vô giá trị ) {
         trở lại vô giá trị ;
       }
       thử {
         trở lại parseDate(str.toString(), parsePatterns);
       } nắm lấy (ParseException e) {
         trở lại vô giá trị ;
       }
     }
     /**
      * Lấy số ngày trong quá khứ
      *
      * @param ngày
      * @trở lại
      */
     công cộng tĩnh dài pastDays(Ngày tháng) {
 
       dài t = System.currentTimeMillis()- date.getTime();
       trở lại t / ( 24 * 60 * 60 * 1000 );
     }
     /**
      * Nhận giờ qua
      *
      * @param ngày
      * @trở lại
      */
     công cộng tĩnh dài pastHour(Ngày tháng) {
       dài t =System.currentTimeMillis() - date.getTime();
       trở lại t / ( 60 * 60 * 1000 );
     }
     /**
      * Nhận phút vừa qua
      *
      * @param ngày
      * @trở lại
      */
     công cộng tĩnh dài pastMinutes(Ngày ngày) {
       dài t = System.currentTimeMillis() - date.getTime();
       trở lại t / ( 60 * 1000 );
     }
     /**
      * Chuyển đổi sang thời gian (ngày, giờ: phút: giây. mili giây)
      *
      * @param timeMillis
      * @trở lại
      */
     công cộng tĩnh Định dạng chuỗi Ngày giờ( dài thời gianHàng nghìn) {
       dài ngày = thời gianMillis / ( 24 * 60 * 60 * 1000 );
       dài giờ = (timeMillis / ( 60 * 60 * 1000 ) - ngày * 24 );
       dài phút = ((timeMillis / ( 60 * 1000 )) - ngày * 24 * 60 - giờ * 60 );
       dài s = (timeMillis / 1000 - ngày * 24 * 60 * 60 - giờ * 60 * 60 - phút * 60 );
       dài sss = (timeMillis - ngày * 24 * 60 * 60 * 1000 - giờ * 60 * 60 * 1000 - phút * 60 * 1000 - s * 1000 );
       trở lại (ngày > 0 ? ngày + "," : "" ) + giờ + ":" + phút + ":" + s + "." + sss;
     }
     /**
      * Lấy số ngày giữa hai ngày
      *
      * @param trước
      * @param sau
      * @trở lại
      */
     công cộng tĩnh gấp đôi getDistanceOfTwoDate(Ngày trước, Ngày sau) {
       dài beforeTime = before.getTime();
       dài afterTime = after.getTime();
       trở lại (sauThời Gian - trướcThời Gian) / ( 1000 * 60 * 60 * 24 );
     }
     công cộng tĩnh Chuỗi getFirstDayOfMonth() {
       Định dạng SimpleDateFormat = mới Định dạng ngày tháng đơn giản "năm-tháng-ngày" );
       //Lấy ngày đầu tiên của tháng hiện tại:
       Lịch c = Calendar.getInstance();
       c.add(Lịch.THÁNG, 0 );
       c.set(Lịch.NGÀY_CỦA_THÁNG, 1 ); // Đặt về ngày 1, ngày hiện tại là ngày đầu tiên của tháng này
       Chuỗi đầu tiên = format.format(c.getTime());
       trở lại Đầu tiên;
     }
     /**
      * @param lập luận
      * @throws Ngoại lệ Parse
      */
     công cộng tĩnh vô hiệu main(String[] args) ném Ngoại lệ phân tích {
// System.out.println(formatDate(parseDate("2010/3/6")));
// System.out.println(getDate("yyyy MM tháng dd ngày E"));
// thời gian dài = new Date().getTime()-parseDate("2012-11-19").getTime();
// System.out.println(thời gian/(24*60*60*1000));
       Kích thước chuỗiDate = formatDate( mới Ngày(), "năm MMdd" );
       System.out.println(sizeDate);
     }
}

Vậy là xong. Để đạt được cách sắp xếp cụ thể, bạn chỉ cần tự mình quyết định và mở rộng nó dựa trên các ví dụ.

Hãy chú ý đến hai cạm bẫy khi sử dụng tính năng sắp xếp.

1. Xử lý ngoại lệ khi trường cần sắp xếp trống.

2. Xử lý ngoại lệ khi các trường cần sắp xếp bằng nhau.

Kiến thức bổ sung: Sắp xếp tự nhiên và sắp xếp so sánh trong Java.

Những gì tôi đã viết trước đây: Tôi đã bối rối khi lần đầu tiên biết về hai cách sắp xếp. Mặc dù tôi có thể viết chúng ra nhưng tôi không biết khi nào nên sử dụng cách sắp xếp nào. Sau đó, sau khi nghiên cứu các chức năng khác nhau của cả hai, tôi đã không biết. nhận thấy rằng chức năng sắp xếp tự nhiên trên các lớp thực thể, trong khi chức năng sắp xếp so sánh hoạt động trên các tập hợp chứa các lớp thực thể.

1. Sắp xếp tự nhiên: java.lang.Comparable.

Giao diện Comparable chỉ cung cấp một phương thức: so sánhTo(Object obj) và giá trị trả về của phương thức này là int. Nếu giá trị trả về là số dương, điều đó có nghĩa là đối tượng hiện tại (đối tượng gọi phương thức này) "lớn hơn" so với đối tượng obj; nếu không, nó sẽ "nhỏ hơn" nếu nó bằng 0; các vật đều bằng nhau.

Tóm tắt trong một câu: triển khai Comparable và ghi đè phương thức so sánh.

Ví dụ: Lấy TreeMap làm ví dụ. Thứ tự tăng dần mặc định có thể được ghi đè bằng phương pháp sắp xếp tự nhiên để thay đổi cách sắp xếp ban đầu.

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
công cộng tĩnh vô hiệu kiểm tra so sánh(){
     TreeMap tmp = mới TreeMap<ô tô,="" đối="" tượng="">();
     tmp.put( mới Xe hơi( 4 ), "四" );
     tmp.put( mới Xe hơi( 1 ), "một" );
     tmp.put( mới Xe hơi( 5 ), "Ngô" );
     tmp.put( mới Xe hơi( 3 ), "ba" );
     tmp.put( mới Xe hơi( 2 ), "hai" );
     System.out.println(tmp);
     //Kết quả: //{Ô tô [price=5.0]=五, Ô tô [price=4.0]=四, Ô tô [price=3.0]=三, Ô tô [price=2.0]=二, Ô tô [price=1.0]= một}
   }
// Phương pháp sắp xếp TreeMap tùy chỉnh sắp xếp tự nhiên 
 
lớp học Xe hơi thực hiện Có thể so sánh{
   riêng tư gấp đôi giá;
  
   công cộng gấp đôi lấyGiá() {
     trở lại giá;
   }
 
   công cộng vô hiệu đặtGiá( gấp đôi giá) {
     cái này .giá = giá;
   }
 
   công cộng Xe hơi( số nguyên giá) {
     siêu ();
     cái này .giá = giá;
   }
 
   @Ghi đè
   công cộng số nguyên so sánhTo(Car o) {
     // TODO Phương thức tự động tạo stub
     nếu như ( cái này .giá>o.lấyGiá()){
       trở lại - 1 ; // Con lớn đi trước
     } khác nếu như ( cái này .giá<>
       trở lại 1 ; // Cái nhỏ đi về phía sau
     } khác {
       trở lại 0 ;
     }
   }
 
   @Ghi đè
   công cộng Chuỗi toString() {
     trở lại "Xe [giá=" + giá + "]" ;
   }

2. Sắp xếp bộ so sánh: java.util.Comparator.

Tóm tắt trong một câu: triển khai giao diện Comparator và ghi đè phương thức so sánh.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
công cộng tĩnh vô hiệu Bộ so sánh thử nghiệm()
     //HashMap hm = new HashMap();
     TreeMap tmp = mới TreeMap( mới MyComparatorBigtoSmall());
     tmp.put( 4 , "四" );
     tmp.put( 1 , "một" );
     tmp.put( 5 , "Ngô" );
     tmp.put( 3 , "ba" );
     tmp.put( 2 , "hai" );
     //System.out.println(tmp);//Kết quả sắp xếp mặc định: {1=one, 2=two, 3=two, 4=four, 5=year}
     System.out.println(tmp); //Sửa đổi sang sắp xếp so sánh (thứ tự tăng dần) {5=năm, 4=bốn, 3=ba, 2=hai, 1=một}
   }
 
// Sắp xếp so sánh phương pháp sắp xếp TreeMap tùy chỉnh 
   lớp học MyComparatorBigtoSmall thực hiện Bộ so sánh{
 
     @Ghi đè
     công cộng số nguyên so sánh(Số nguyên o1, Số nguyên o2) {
       // TODO Phương thức tự động tạo stub
       trở lại o2-o1;
     }
   }

Bài viết trên về java triển khai Comparable giao diện sắp xếp, thứ tự tăng dần, thứ tự giảm dần và hồi tưởng là tất cả những nội dung được biên tập viên chia sẻ, hy vọng có thể cho các bạn tham khảo và cũng mong các bạn có thể ủng hộ mình.

Liên kết gốc: https://blog.csdn.net/C1041067258/article/details/86578188.

Cuối cùng, bài viết này về cách triển khai sắp xếp giao diện So sánh, thứ tự tăng dần, thứ tự giảm dần và hồi tưởng của Java có tại đây. Nếu bạn muốn biết thêm về cách triển khai sắp xếp giao diện So sánh, thứ tự tăng dần, thứ tự giảm dần và hồi tưởng của Java, vui lòng tìm kiếm CFSDN. bài viết hoặc tiếp tục Duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

28 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress