List.sort 比较器排序

查询到的数据放入List中,

T为实体类,假设有两个字段A和B

当 A==1时将其排序靠前,并按照B字段排序

也就说,A==1的数据,要在A!=1的数据前面,

A==1的数据还要再根据B字段排序,请不吝赐教。


宝慕林4294392
浏览 972回答 1
1回答

跃然一笑

&nbsp;import&nbsp;java.util.ArrayList; import&nbsp;java.util.Collections; import&nbsp;java.util.Comparator; import&nbsp;java.util.List; class&nbsp;Untitled&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<I>&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<I>(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(1,&nbsp;3)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(1,&nbsp;2)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(1,&nbsp;5)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(0,&nbsp;5)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(7,&nbsp;1)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(8,&nbsp;0)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(9,&nbsp;3)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(4,&nbsp;9)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(new&nbsp;I(5,&nbsp;5)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collections.sort(list,&nbsp;new&nbsp;Comparator<I>()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;compare(I&nbsp;o1,&nbsp;I&nbsp;o2)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(o1.A&nbsp;==&nbsp;1&nbsp;&&&nbsp;o2.A&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;o1.B&nbsp;-&nbsp;o2.B; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(o1.A&nbsp;==&nbsp;1&nbsp;||&nbsp;o2.A&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;o1.A&nbsp;==&nbsp;1&nbsp;?&nbsp;-1&nbsp;:&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;o1.B&nbsp;-&nbsp;o2.B; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(list); &nbsp;&nbsp;&nbsp;&nbsp;} } class&nbsp;I { &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;A; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;B; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;I(int&nbsp;a,&nbsp;int&nbsp;b)&nbsp;{&nbsp;A&nbsp;=&nbsp;a;&nbsp;B&nbsp;=&nbsp;b;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;toString()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;A&nbsp;+&nbsp;","&nbsp;+&nbsp;B; &nbsp;&nbsp;&nbsp;&nbsp;} }运行结果[1,2, 1,3, 1,5, 8,0, 7,1, 9,3, 0,5, 5,5, 4,9]
打开App,查看更多内容
随时随地看视频慕课网APP