java自定义排序

 1 package GoodsSorting;
 2 //实例类
 3 public class GoodsParameter {
 4     // 价格
 5     private double price;
 6     // 收藏量
 7     private int favor;
 8     // 商品名称
 9     private String goodsname;
10     //无参构造
11     public GoodsParameter() {
12         super();
13     }
14     //带参构造
15     public GoodsParameter(String goodsname, double price, int favor) {
16         super();
17         this.price = price;
18         this.favor = favor;
19         this.goodsname = goodsname;
20     }
21     public double getPrice() {
22         return price;
23     }
24     public void setPrice(double price) {
25         this.price = price;
26     }
27     public int getFavor() {
28         return favor;
29     }
30     public void setFavor(int favor) {
31         this.favor = favor;
32     }
33     public String getGoodsname() {
34         return goodsname;
35     }
36     public void setGoodsname(String goodsname) {
37         this.goodsname = goodsname;
38     }
39     //重写tostring
40     @Override
41     public String toString() {
42         return "\t商品:" + getGoodsname() + "\t价格:" + getPrice() + "\t收藏量:"
43                 + getFavor() + "\n";
44     }
45 }
 1 package GoodsSorting;
 2 //排序工具类
 3 import java.util.Comparator;
 4
 5 public class PriceSort implements Comparator<GoodsParameter> {
 6
 7     public int compare(GoodsParameter o1, GoodsParameter o2) {
 8         int i=0;
 9         //按价格排序 正序
10         if ((o1.getPrice() - o2.getPrice()) > 0) {
11             i=1;
12
13         }
14         else {
15             i=-1;
16
17         }
18         return i;
19
20     }
21
22 }
 1 package GoodsSorting;
 2
 3 import java.util.Comparator;
 4
 5 public class FavorSort implements Comparator<GoodsParameter> {
 6
 7     public int compare(GoodsParameter o1, GoodsParameter o2) {
 8         int i = 0;
 9         // 按收藏排序 正序
10         if (o1.getFavor()-o2.getFavor()<0) {  //逆序只需修改为>0
11             i=-1;
12         }
13         return i;
14     }
15
16 }
 1 package GoodsSorting;
 2
 3 import java.util.Comparator;
 4
 5 public class NameSort implements Comparator<GoodsParameter> {
 6     public int compare(GoodsParameter o1, GoodsParameter o2) {
 7         int result = o1.getGoodsname().compareTo(o2.getGoodsname());
 8         return result;
 9     }
10
11 }
 1 package GoodsSorting;
 2 //测试类
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.List;
 6
 7 public class TestApp {
 8     public static void main(String[] args) {
 9         List<GoodsParameter> list = new ArrayList<GoodsParameter>();
10         list.add(new GoodsParameter("iphone", 5200, 110000));
11         list.add(new GoodsParameter("xiaomi", 1999, 50000));
12         list.add(new GoodsParameter("huawei", 1899, 60054));
13         list.add(new GoodsParameter("samsung", 4500, 80000));
14         list.add(new GoodsParameter("meizu", 1699, 125863));
15         // 排序前
16         System.out.println("原序:**********************");
17         System.out.println(list);
18
19         Collections.sort(list, new PriceSort()); // 注意这里是collections
20         // 按价格排序后
21         System.out.println("价格排序:**********************");
22         System.out.println(list);
23         // 收藏量正序
24         System.out.println("收藏量排序:**********************");
25         Collections.sort(list, new FavorSort());
26         System.out.println(list);
27         // 名称正序
28         System.out.println("名称排序:**********************");
29         Collections.sort(list, new NameSort());
30         System.out.println(list);
31     }
32 }
时间: 2024-08-01 13:43:13

java自定义排序的相关文章

LeetCode1029 两地调度(贪心+java自定义排序回顾)

题目: 公司计划面试 2N 人.第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]. 返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达. 示例: 输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 A 市,费用为 10.第二个人去 A 市,费用为 30.第三个人去 B 市,费用为 50.第四个人去 B 市,费用为 20. 最低总费用为 10 + 30 + 50 + 20 =

Java集合框架实现自定义排序

Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优化. 一 .使用Arrays对数组进行排序 Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法. 1.使用Arrays排序:Arrays使用非常简单,直接调用sort()即可 int[] arr = new int[] {5,8,-2,0,10}; Array

java编程排序之自定义类型的集合,按业务需求排序

自定义引用类型放入集合中,按实际业务需求进行排序的两种思路 第一种思路: (1)自定义实体类实现java.lang.Comparable接口,重写public int compareTo(Object obj)方法.自定义业务比较规则 (2)利用java.util.Collections类的静态方法sort(List<自定义类型> list)进行排序(默认升序)或者.自己编写排序工具类.冒泡+compareTo(obj)方法 第二种思路 (1)自己编写业务比较规则类.实体类不用实现任何借口.业

java自定义类型 比较排序 Comparator接口

String service_time = "6:00:00,7:00:00,8:00:00,9:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:00:00,15:00:00,16:00:00,17:00:00,18:00:00,19:00:00,20:00:00,21:00:00,22:00:00 "; List<String> list = StringUtil.stringToList(service_time, "

Java 中HashTable、HashMap、TreeMap三者区别,以及自定义对象是否相同比较,自定义排序等

/* Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. Map |--Hashtable:底层是哈希表数据结构,不可以存入null键null值.该集合是线程同步的.效率低.基本已废弃 |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的.将hashtable替代,.效率高,不保证顺序. |--TreeMap:底层是二叉树数据结构.线程不同步.可以用于给map集合中的键进行排序.保证顺序 */ import java.util.*

一步一步跟我学习lucene(13)---lucene搜索之自定义排序的实现原理和编写自己的自定义排序工具

自定义排序说明 我们在做lucene搜索的时候,可能会需要排序功能,虽然lucene内置了多种类型的排序,但是如果在需要先进行某些值的运算然后在排序的时候就有点显得无能为力了: 要做自定义查询,我们就要研究lucene已经实现的排序功能,lucene的所有排序都是要继承FieldComparator,然后重写内部实现,这里以IntComparator为例子来查看其实现: IntComparator相关实现 其类的声明为 public static class IntComparator exte

定制对ArrayList的sort方法的自定义排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数 示例: // 外部类的方式 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti

Hadoop之--&gt;自定义排序

data: 3 33 23 12 22 11 1 --------------------- 需求: 1 12 12 23 13 23 3 package sort; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path

Lucene 中自定义排序的实现

使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们就来看看在Lucene中如何实现自定义排序功能. Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和 ScoreDocCom