Java比较器
- 在 Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。
- Java实现对象排序的方式有两种
- 自然排序:java.lang.Comparable
- 定制排序:java.util.Comparator
方式一:自然排序 java.lang.Comparable
- Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。
- 实现 compareTo(Object obj) 方法的返回值来比较大小。如果
当前对象 this大于形参 obj,则返回正整数,如果当前对象 this小于形参 obj,则返回负整数,
如果当前对象 thsi等于形参对象 obj,则返回零。 - 实现 Comparable接口的对象列表【和数组】可以通过 Collections.sort或 Arrays.sort
进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。 - 对于类 C的每一个 e1和 e2来说,当且仅当 e1.compareTo(e2) == 0 与 e1.equals(e2)
具有相同的 boolean值时,类 C的自然排序才叫做 equals一致。建议【虽然不是必需的】
最好使用自然排序与 equals一致。
Comparable 的典型实现:【默认都是从小到大排列的】
- String 按照字符串中字符的 Unicode值进行比较。
- Character 按照字符的 Unicode值来进行比较
数组类型对应的包装类以及 BigLnteger,BigDecimal 按照他们对应的数值
大小进行比较 - Boolean:true 对应的包装类实例大于 false对应的包装类实例
- Date,Time等:后面的日期时间比前面的日期时间大
class Goods implements Comparable{ private String name; private double price; //按照价格 比较商品的大小 @Overide public int compareTo(Object o){ //不能写成 this instanceof o //和 o instanceof this if(o instanceof Goods){ Goods other = (Goods)o; if(this.price > other.price){ return 1; }else if(this.price < other.price){ return -1; } return 0; } throw new RuntimeException("输入的数据类型不一样"); } //略 构造器 get set toString 方法}public class Test { @org.junit.Test public void test1() { Goods[] all = new Goods[4]; all[0] = new Goods("<aa>", 100); all[1] = new Goods("<bb>", 50); all[2] = new Goods("<cc>", 399); all[3] = new Goods("<dd>", 200); Arrays.sort(all); //从小到大 Arrays.stream(all).forEach(System.out::print); }}
定制排序:java.util.Comparator
- 当元素的类型没有实现 java.lang.Comparable 接口而又不方便修改代码,
或者实现了 java.lang.Comparable 接口的排序规则不适合当前的操作,那么可以考虑
使用 Comparator的对象排序,强行对多个对象进行整体排序的比较。 - 重写 compare(Object o1,Object 02)方法,比较 o1 和 o2的大小:如果方法返回正
整数,则表示 o1 大于 o2;如果返......原文转载:http://www.shaoqun.com/a/893327.html
跨境电商:https://www.ikjzd.com/
c2c模式:https://www.ikjzd.com/w/1576
feedly:https://www.ikjzd.com/w/754
patents:https://www.ikjzd.com/w/857
Java比较器在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种自然排序:java.lang.Comparable定制排序:java.util.Comparator方式一:自然排序java.lang.ComparableComparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。实现compareTo(Obj
玩转曼谷水上市场 攻略来袭:http://www.30bags.com/a/423553.html
玩转巧克力——上海世界巧克力梦公园:http://www.30bags.com/a/396411.html
玩转青城山&都江堰 - :http://www.30bags.com/a/408307.html
玩转清迈4日游 :http://www.30bags.com/a/414215.html
总裁埋头在双腿间吸允 啃咬她双腿之间的小核:http://lady.shaoqun.com/a/247188.html
囗述我互换丈夫过程 邻居大棒在我体内不停抽搐:http://lady.shaoqun.com/m/a/246753.html
口述实录:性欲难耐出轨4次 高潮缠绵爱难忘:http://lady.shaoqun.com/m/a/251596.html
男人㖭女人的私人部位 深一点我下面好爽:http://www.30bags.com/m/a/249797.html
女性可以学习的五种自卫技能,或者她们可以在关键时刻保护自己:http://lady.shaoqun.com/a/429464.html
女朋友不想用安全措施,我慌了:http://lady.shaoqun.com/a/429465.html
在性的道路上,女性应该如何探索自己?:http://lady.shaoqun.com/a/429466.html
没有避孕套的女人活得更舒服:http://lady.shaoqun.com/a/429467.html
No comments:
Post a Comment