Java List 排序

  

 

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
package ersatz;
 
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
 
public class Ersatz {
  public static void main(String[] args) {
    List list = new LinkedList();
    list.add(new Book("a", "aa", 100));
    list.add(new Book("b", "bb", 10));
    list.add(new Book("c", "cc", 19));
    list.add(new Book("d", "dd", 80));
 
    sort(list, new Comparator() {
      @Override
      public int compare(Object o1, Object o2) {
        Book b1 = (Book) o1;
        Book b2 = (Book) o2;
        if (b1.getPrice() > b2.getPrice()) {
          return 1;
        } else if (b1.getPrice() < b2.getPrice()) {
          return -1;
        } else {
          return 0;
        }
      }
    });
 
    for (Object value : list) {
      System.out.println(value);
    }
 
    sort(list, new Comparator() {
      @Override
      public int compare(Object b, Object p) {
        Book b1 = (Book) b;
        Book b2 = (Book) p;
        if (b1.getPrice() > b2.getPrice()) {
          return -1;
        } else if (b1.getPrice() < b2.getPrice()) {
          return 1;
        } else {
          return 0;
        }
      }
    });
 
    for (Object value : list) {
      System.out.println(value);
    }
  }
 
  public static void sort(List list, Comparator comparator) {
    int size = list.size();
    for (int i = 0; i < size - 1; ++i) {
      for (int j = 0; j < size - 1 - i; ++j) {
        Book b1 = (Book) list.get(j);
        Book b2 = (Book) list.get(j + 1);
        if (comparator.compare(b1, b2) > 0) {
          list.set(j, b2);
          list.set(j + 1, b1);
        }
      }
    }
  }
}
 
class Book {
  private String name;
  private String author;
  private double price;
 
  @Override
  public String toString() {
    return "名称:" + name + "\t\t价格:" + price + "\t\t作者:" + author;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getAuthor() {
    return author;
  }
 
  public void setAuthor(String author) {
    this.author = author;
  }
 
  public double getPrice() {
    return price;
  }
 
  public void setPrice(double price) {
    this.price = price;
  }
 
  public Book(String name, String author, double price) {
    this.name = name;
    this.author = author;
    this.price = price;
  }
}

  

posted @   ascertain  阅读(301)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-07-16 if else实现排序
点击右上角即可分享
微信分享提示