- 浏览: 438360 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
CmdSmith:
这么构建出来的应该都是完全二叉树吧。。
java实现二叉树的构建以及3种遍历方法 -
haoyuan2012:
非常好,很受益
java实现二叉树的构建以及3种遍历方法 -
haizhiguang:
请问楼主是如何想到 nodeList.get(parent ...
java实现二叉树的构建以及3种遍历方法 -
Angry_Icarus:
赞赞赞
java实现二叉树的构建以及3种遍历方法 -
lilin9043:
刚刚用这个 不会用
UrlRewrite时需要注意的问题:action以及正则表达式
首先需要实现带泛型的Comparable接口,按照自己想要的排序方式重写compareTo,事实上在重写compareTo时,内核用到的依然是Integer、String、Charactor这些已经有自己compareTo的常用数据类型,只是加入了自己的一些想法而已。
第一个例子
/*为了比较,让自己的类实现Comparable接口,按照自己想要的排序方式重写compareTo *Map只是提供了对键的排序,但是当我们需要对值排序时就的提供我们自己的比较器 这里 只是模拟了Map但是实际上并没有使用Map */ import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class SortByValue { public static void main(String[] args) { Set<Pair> set = new TreeSet<Pair>(); set.add(new Pair("me", "1000")); set.add(new Pair("and", "4000")); set.add(new Pair("you", "3000")); set.add(new Pair("food", "10000")); set.add(new Pair("hungry", "5000")); set.add(new Pair("later", "6000")); set.add(new Pair("myself", "1000")); for (Iterator<Pair> i = set.iterator(); i.hasNext();) // 我喜欢这个for语句 System.out.println(i.next()); } } class Pair implements Comparable<Object> { private final String name; private final int number; public Pair(String name, int number) { this.name = name; this.number = number; } public Pair(String name, String number) throws NumberFormatException { this.name = name; this.number = Integer.parseInt(number); } public int compareTo(Object o) { if (o instanceof Pair) { // int cmp = Double.compare(number, ((Pair) o).number); int cmp = number - ((Pair) o).number; if (cmp != 0) {// number是第一要比较的,相当于先比较value。如果相同再比较键 return cmp; } return name.compareTo(((Pair) o).name); } throw new ClassCastException("Cannot compare Pair with " + o.getClass().getName()); } public String toString() { return name + ' ' + number; } } 输出结果: me 1000 myself 1000 you 3000 and 4000 hungry 5000 later 6000 food 10000
第二个例子:
import java.util.*; public class NameSort { public static void main(String[] args) { Name[] nameArray = { new Name("John", "Lennon"), new Name("Karl", "Marx"), new Name("Groucho", "Marx"), new Name("Oscar", "Grouch") }; Arrays.sort(nameArray); for (int i = 0; i < nameArray.length; i++) { System.out.println(nameArray[i].toString()); } } } class Name implements Comparable<Name> { public String firstName, lastName; public Name(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public int compareTo(Name o) { // 实现接口 int lastCmp = lastName.compareTo(o.lastName); // 首先比较姓(lastName)如果姓相同(lastCmp==0)再比较名(firstName),否则返回名的比较 return (lastCmp == 0 ? firstName.compareTo(o.firstName) : lastCmp); } public String toString() { // 便于输出测试 return firstName + " " + lastName; } } 输出结果: Oscar Grouch John Lennon Groucho Marx Karl Marx
//看看这个三目运算符的漂亮应用哦! public int compareTo(Pair o) { int cmp = number - o.number; return (cmp == 0 ? name.compareTo(o.name) : cmp); } ---------------------- public int compareTo(Name o) { // 实现接口 int lastCmp = lastName.compareTo(o.lastName); // 首先比较姓(lastName)如果姓相同(lastCmp==0)再比较名(firstName),否则返回名的比较 return (lastCmp == 0 ? firstName.compareTo(o.firstName) : lastCmp); }
参考:http://han.guokai.blog.163.com/blog/static/136718271201001010228136/
http://develop.csai.cn/java/200905260937361763.htm
.
发表评论
-
采用Client/Server模型理解回调callback
2012-04-22 11:38 4414关于回调早就听说过,但是不曾理解过,周日的上午外面阳光灿烂,我 ... -
java源文件夹打包
2012-04-01 12:49 1182有时候我们可能需要修改源文件来适应自己的需求 案 ... -
使用命令行的方式启动Mina
2012-02-29 09:50 0/** * 使用命令行的方式启动Mina ... -
MD5的工具方法使用
2011-12-07 10:33 1655package com.cdl.test; impo ... -
二进制基础(负数转二进制)
2011-10-30 14:49 2213比如,假设有一 int 类型的数,值为5,那么,我们知道它在计 ... -
java.util包的集合框架应用
2011-10-27 23:19 1330package mix.test; import j ... -
对Entity的未用字段进行借鸡下蛋
2011-09-20 15:00 1241. 1.实体 public class Image ... -
不要再困扰在String与StringBuffer(StringBuilder)的区别上鸟
2011-06-29 16:44 1171无论是初学者还是在java ... -
在myeclipse8.5中导出uml类图
2011-06-21 19:59 1490百度一下:myeclipse类图 . http://wenk ... -
用一下UML建模工具Rational Rose以及类图的基本关系
2011-06-09 14:24 10763. 基本的类图关系: 编码实现: packa ... -
统计某一数组中重复数字的次数
2011-04-28 18:15 5701. 今天上谯老师软件项目管理方法与实践课时给出了一个他曾经留 ... -
模仿String.indexOf,判断一个字符串是否包含另一个字符串
2011-04-26 15:42 4313. 目录: 一.方法介绍 二.图示意 三.源代码 一.方法 ... -
在MyEclipse中添加Java、Struts...源码
2011-03-09 15:14 1149三种方法: 第一种: “window”-> " ... -
使用接口的核心原因:为了向上转型为多个基类型,以及由此带来的灵活。
2010-12-01 13:45 1158package thinkingInJava.interf ... -
后台打印在参看程序执行流程中的重要作用
2010-11-15 13:19 1002附注:在每个方法里打印”进入这个方法、方法的名称”,这样 ... -
自定义类中2个元素的比较升级到3个元素的比较
2010-10-28 23:26 1237可以先参考一下前面的一篇文章:为了比较,让自己的类实现Comp ... -
给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
2010-10-26 23:59 2816关于Map.Entry可以参看在容器中使用增强的for循环, ... -
在容器中使用增强的for循环,简洁大气,结构清晰
2010-10-26 21:44 1501除了增强的for循环使代 ... -
求模( Modulus )与求余(Remainder) (转)
2010-10-26 17:37 2462import java.math.BigInteger; ... -
今天非常高兴,解决了一个由来已久的单词出现频率统计问题。以及容器浅总结
2010-10-26 16:33 2683总述:人与动物的最大 ...
相关推荐
在某些情况下,我们需要实现Comparable接口,并重写compareTo()方法,使其比较对象的大小。 需要注意的是,在重写compareTo()方法时,我们需要遵守一些规则,如传递性、反射性、一致性等。违反这些规则可能会出现...
对于自定义类,如果需要进行比较和排序,也需要实现Comparable接口,并重写`compareTo()`方法。这是确保自定义类对象能参与排序的关键步骤。 实现Comparable接口的类应该遵循一个重要的原则:如果`compareTo()`方法...
具体实现方式是在类中重写`compareTo()`方法,根据业务逻辑定义比较规则。例如,如果我们有一个`Person`类,包含`age`属性,我们可以按照年龄排序: ```java public class Person implements Comparable<Person> { ...
当我们需要按照特定规则对类实例进行排序时,只需要在自定义类中实现Comparable接口,并重写`compareTo()`方法,定义比较逻辑即可。 Comparator接口则位于java.util包下,它提供了一个比较两个对象的方法`compare(T...
在上面的示例中,我们实现了 Comparable 接口,并重写了 compareTo 方法。在该方法中,我们首先对字符串进行排序,如果字符串不相等,则返回比较结果;否则,我们对日期进行排序,如果日期不相等,则返回比较结果;...
对于自定义类,如`Person`,如果想要支持排序,你需要在`Person`类中实现Comparable接口,并重写`compareTo(Person another)`方法,根据类的属性(如姓名、年龄)来定义比较规则。 而Comparator接口则不同,它不在...
如果是自然排序,需要元素实现Comparable接口,重写compareTo方法 如果是定制排序,需要创建TreeSet对象的时候,传入一个Comparetor接口实现类对象,重写compare方法 一般是默认排序用自然排序(Comparable接口)...
`Comparable`接口定义了一个`compareTo`方法,该方法用于比较两个实现了该接口的对象。当一个类实现了`Comparable`接口后,就表示该类的对象可以被排序,并且`compareTo`方法将用于控制这些对象的排序顺序。 #### `...
`Comparable`接口是一种内置的比较机制,它允许一个类能够自我比较,即一个类自己实现了如何与其他同类型的对象进行比较的方法。当我们希望一个类能够按照某种规则进行排序时,就可以让这个类实现`Comparable`接口,...
当一个类实现了`Comparable`接口时,意味着它可以与同类的其他对象进行比较,并根据某种逻辑排序。例如,`Integer`和`String`类就实现了`Comparable`接口。 ##### 2. 方法详解 - `int compareTo(Object o)`: 此方法...
例如,String类就实现了Comparable接口,按照字符串的字典顺序进行比较。当你需要对一个集合(如ArrayList或LinkedList)进行排序时,只需确保其中的元素类型实现了Comparable接口,然后调用Collections.sort()方法...
在 java 中,要实现类的大小比较可以实现 Comparable 接口并通 过重写 compareTo 方法来实现。 在 Mapreduce 中,如果需要自定义类的排序规则,需要让类实现 Writable 的子接口 WritableComparable,重写里面的 ...
Comparator接口允许我们为任何类定义自定义的比较逻辑,即使这个类没有实现Comparable接口。它提供了compare(T o1, T o2)方法,用于比较两个对象: ```java public interface Comparator<T> { int compare(T o1, T...
例如,String、Integer等内置类已经实现了Comparable接口,可以方便地进行大小比较。当我们自定义一个类并希望它在集合(如List)中能自动排序时,就需要实现Comparable接口。通过重写`compareTo()`方法,我们可以...
如果你添加的不是天然可比较的对象,例如自定义的User类,那么你需要让User类实现Comparable接口,并重写compareTo()方法,定义排序规则。这样,当你向TreeSet添加User对象时,排序依据就是你在compareTo()方法中...
例如,User 类原本没有排序功能,但当我们让它实现 Comparable<User> 接口后,就可以为 User 对象添加基于年龄的排序能力。通过重写 `compareTo(User o)` 方法,我们可以定义 User 对象之间比较的逻辑。在这个方法中...
为了使用自然排序,元素所属的类需要实现Comparable接口,并重写compareTo方法。compareTo方法返回一个整数值,用于比较两个对象的顺序。如果返回值小于0,表示当前对象小于参数对象;如果返回值等于0,表示当前对象...
Comparator接口包含两个方法:`compare(T o1, T o2)`用于比较两个对象的大小,以及`equals(Object obj)`,虽然可以不实现,但为了遵循通用的equals合同,建议在自定义Comparator时重写此方法以确保一致性。...
然后,我们定义了一个名为 student 的类,该类实现了 MyComparable 接口,并重写了 compareTo() 方法。在 compareTo() 方法中,我们使用 num 变量来比较两个学生对象的大小顺序。 Comparator 接口 Comparator 接口...