主要用到: Collections.sort()方法:
1. JavaBean —— Content.java:
- package com.hmw.listsort;
- public class Content {
- private long key;
- private String name;
- public Content(long key, String name) {
- this.key = key;
- this.name = name;
- }
- public long getKey() {
- return key;
- }
- public void setKey(long key) {
- this.key = key;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
2. 进行比较的类 —— ContentComparator.java:
- package com.hmw.listsort;
- import java.util.Comparator;
- public class ContentComparator implements Comparator<Content>{
- public int compare(Content o1, Content o2) {
- //将 null 排到最后
- if(o1 == null){
- return 1;
- }
- if(o2 == null || !(o2 instanceof Content)){
- return -1;
- }
- long key1 = o1.getKey();
- long key2 = o2.getKey();
- return key1 > key2 ? 1 : key1 < key2 ? -1 : 0;
- /*
- //如果想要按照 name 字段进行排序, 只需将最后三行代码改为下面这一行即可
- return o1.getName().compareTo(o2.getName());
- */
- }
- }
3. 测试类 —— CompareClient.java
- package com.hmw.listsort;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- public class CompareClient {
- public static void main(String[] args) {
- List<Content> list = new ArrayList<Content>();
- list.add(null);
- list.add(new Content(15000, "---15000--"));
- list.add(new Content(10000, "---10000---"));
- list.add(new Content(20000, "---20000---"));
- list.add(null);
- list.add(new Content(25000, "---25000---"));
- list.add(new Content(13000, "---13000---"));
- list.add(new Content(15000, "---15000---"));
- list.add(new Content(89000, "---89000---"));
- Collections.sort(list, new ContentComparator());
- /*
- //如果要按照降序排列再加上这一行代码即可
- Collections.reverse(list);
- */
- for (Content content : list) {
- if (content == null) {
- System.out.println("null");
- } else {
- System.out.println("content.getName()/t" + content.getName());
- }
- }
- }
- }
输出结果如下:
content.getName() ---10000---
content.getName() ---13000---
content.getName() ---15000--
content.getName() ---15000---
content.getName() ---20000---
content.getName() ---25000---
content.getName() ---89000---
null
null