- 浏览: 542921 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (233)
- 设计模式 (1)
- WEBLOGIC (2)
- spring (2)
- struts (1)
- hibernate (8)
- SOA (11)
- j2ee (0)
- corba (0)
- linux (2)
- oracle (0)
- webService (17)
- javaMail (1)
- junit (3)
- java (45)
- 正则表达式 (7)
- java+xml (4)
- html (2)
- javaScript (6)
- ajax (1)
- mysql (0)
- eclipse (2)
- eclipse插件开发 (3)
- 软件工程 (5)
- ant (6)
- 开源包 (6)
- 学习网站 (7)
- Struts2 (18)
- JSP (1)
- 持续集成 (4)
- FreeMaker (6)
- 工作项目点点 (4)
- Maven2 (6)
- JQuery (1)
- 日志记录 (9)
- 工作流 (4)
- BPEL (1)
- extJs (1)
- 组件 (1)
- OSGI (10)
- ESB总线学习 (1)
- 错误解决 (2)
- JMX (3)
- 网络知识 (1)
最新评论
-
duanlongk:
这个问题解决了么?
java.lang.NoClassDefFoundError: org/apache/tuscany -
sotrip:
从上面结果来看,HelloWorld.class是由虚拟机的内 ...
如何实现自己的classloader -
zengsir2008:
哎,不太明白。。。。
OSGI DS 实例 -
ralfsumahe:
...
使用XFire开发Web Service客户端完整入门教程 -
liuqiao_0702:
...
osgi spring hibernate =
http://bluelzx.iteye.com/blog/200987
1. 两种比较接口分析 在 “ 集合框架 ” 中有两种比较接口: Comparable 接口和 Comparator 接口。 Comparable 是通用的接口,用户可以实现它来完成自己特定的比较,而 Comparator 可以看成一种算法的实现,在需要容器集合实现比较功能的时候,来指定这个比较器,这可以看成一种设计模式,将算法和数据分离。 前者应该比较固定,和一个具体类相绑定,而后者比较灵活,它可以被用于各个需要比较功能的类使用。 一个类实现了 Camparable 接口表明这个类的对象之间是可以相互比较的。如果用数学语言描述的话就是这个类的对象组成的集合中存在一个全序。这样,这个类对象组成的集合就可以使用 Sort 方法排序了。 而 Comparator 的作用有两个: 1 、如果类的设计师没有考虑到 Compare 的问题而没有实现 Comparable 接口,可以通过 Comparator 来实现比较算法进行排序; 2 、为了使用不同的排序标准做准备,比如:升序、降序或其他什么序。 2 Comparable 接口 public interface Comparable { public int compareTo(T o); } java.lang. Comparable 接口定义类的自然顺序,实现该接口的类就可以按这种方式排序。 1 ) int compareTo(Object o): 比较当前实例对象与对象 o ,如果位于对象 o 之前,返回负值,如果两个对象在排序中位置相同,则返回 0 ,如果位于对象 o 后面,则返回正值。 2 )在 Java 2 SDK 版本 1.4 中有二十四个类实现 Comparable 接口。下表展示了 8 种基本类型的自然排序。虽然一些类共享同一种自然排序,但只有相互可比的类才能排序。 类 排序 BigDecimal,BigInteger,Byte,Double, Float,Integer,Long,Short 按数字大小排序 Character 按 Unicode 值的数字大小排序 String 按字符串中字符 Unicode 值排序 利用 Comparable 接口创建自己的类的排序顺序,只是实现 compareTo() 方法的问题。通常就是依赖几个数据成员的自然排序。同时类也应该覆盖 equals() 和 hashCode() 以确保两个相等的对象返回同一个哈希码。 这个接口的作用:如果数组或者集合中的(类)元素实现了该接口的话 , 我们就可以调用 Collections.sort 和 Arrays.sort 排序,或应用于有序集合 TreeSet 和 TreeMap 中。 下面设计一个有序的类 Person ,它实现 Comparable 接口,以年龄为第一关键字,姓名为第二关键字升序排序。 Person.java package com.zj.sort.comparable; public class Person implements Comparable { private int age ; private String name ; public Person( int age, String name) { this . age = age; this . name = name; } public int compareTo(Person person) { int cop = age - person.getAge(); if (cop != 0) return cop; else return name .compareTo(person. name ); } public int getAge() { return age ; } public String getName() { return name ; } public int hashCode() { int result = 17; result = 37 * result + age ; result = 37 * result + name .hashCode(); return result; } public boolean equals(Object o) { if (!(o instanceof Person)) return false ; Person person = (Person) o; return ( age == person. age ) && ( name .equals(person. name )); } public String toString() { return ( age + "{" + name + "}" ); } } 2.1 测试 Arrays.sort ()方法 ArraysSortUnit.java package com.zj.sort.comparable; import java.util.Arrays; import com.zj.compare.Person; public class ArraysSortUnit { public static void main(String[] args) { Person[] ps = { new Person(20, "Tom" ), new Person(20, "Jeff" ), new Person(30, "Mary" ), new Person(20, "Ada" ), new Person(40, "Walton" ), new Person(61, "Peter" ), new Person(20, "Bush" ) }; System. out .println(Arrays.toString (ps)); Arrays.sort (ps); System. out .println(Arrays.toString (ps)); } } 结果: [20{Tom}, 20{Jeff}, 30{Mary}, 20{Ada}, 40{Walton}, 61{Peter}, 20{Bush}] [20{Ada}, 20{Bush}, 20{Jeff}, 20{Tom}, 30{Mary}, 40{Walton}, 61{Peter}] 2.2 测试 Collections.sort ()方法 CollctionsSortUnit.java package com.zj.sort.comparable; import java.util.Arrays; import java.util.Collections; import com.zj.compare.Person; public class CollctionsSortUnit { public static void main(String[] args) { Person[] ps = { new Person(20, "Tom" ), new Person(20, "Jeff" ), new Person(30, "Mary" ), new Person(20, "Ada" ), new Person(40, "Walton" ), new Person(61, "Peter" ), new Person(20, "Bush" ) }; System. out .println(Arrays.toString (ps)); Collections.sort (Arrays.asList (ps)); System. out .println(Arrays.toString (ps)); } } 结果: [20{Tom}, 20{Jeff}, 30{Mary}, 20{Ada}, 40{Walton}, 61{Peter}, 20{Bush}] [20{Ada}, 20{Bush}, 20{Jeff}, 20{Tom}, 30{Mary}, 40{Walton}, 61{Peter}] 2.3 测试 TreeSet TreeSetUnit.java package com.zj.sort.comparable; import java.util.TreeSet; import com.zj.compare.Person; public class TreeSetUnit { public static void main(String[] args) { TreeSet set = new TreeSet(); set.add( new Person(20, "Tom" )); set.add( new Person(20, "Jeff" )); set.add( new Person(30, "Mary" )); set.add( new Person(20, "Ada" )); set.add( new Person(40, "Walton" )); set.add( new Person(61, "Peter" )); set.add( new Person(20, "Bush" )); System. out .println(set); } } 结果: [20{Ada}, 20{Bush}, 20{Jeff}, 20{Tom}, 30{Mary}, 40{Walton}, 61{Peter}] 2.4 测试 TreeMap TreeMapUnit.java package com.zj.sort.comparable; import java.util.TreeMap; import com.zj.compare.Person; public class TreeMapUnit { public static void main(String[] args) { TreeMap map = new TreeMap(); map.put( new Person(20, "Tom" ), "Tom" ); map.put( new Person(20, "Jeff" ), "Jeff" ); map.put( new Person(30, "Mary" ), "Mary" ); map.put( new Person(20, "Ada" ), "Ada" ); map.put( new Person(40, "Walton" ), "Walton" ); map.put( new Person(61, "Peter" ), "Peter" ); map.put( new Person(20, "Bush" ), "Bush" ); System. out .println(map); } } 结果: {20{Ada}=Ada, 20{Bush}=Bush, 20{Jeff}=Jeff, 20{Tom}=Tom, 30{Mary}=Mary, 40{Walton}=Walton, 61{Peter}=Peter} 3. Comparator 接口 public interface Comparator { int compare(T o1, T o2); boolean span
发表评论
-
类加载机制转载
2009-06-23 09:58 2387Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某 ... -
OSGI环境下配置log4j日志
2009-05-07 14:07 1459log4j相信大家都用过的 ... -
Java虚拟机类装载:原理、实现与应用
2009-05-07 09:50 1541Java虚拟机类装载:原理、实现与应用 By jo ... -
Java程序类加载完全揭密
2009-05-07 09:49 1139Java程序类加载完全揭密 ... -
Java的类装载器(Class Loader)和命名空间(NameSpace)
2009-05-07 09:48 1808Java的类装载器(Class Loader)和命名空间(Na ... -
Java类装载体系中的隔离性
2009-05-07 09:28 1440Java类装载体系中的隔离性 正文 Java中类 ... -
了解 JAVA classloader
2009-05-07 09:21 1125什么是 ClassLoader? ... -
如何实现自己的classloader
2009-05-07 09:12 2076如何实现自己的classloader 如何实现自己的clas ... -
ClassLoader原理
2009-05-07 09:06 1049JVM规范定义了两种类型的类装载器:启动内装载器(bootst ... -
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecuto
2009-04-03 11:32 1343在多线程大师Doug Lea的 ... -
MD5
2009-03-17 09:17 1035使用 Java 生成 MD5 编码 MD5即 ... -
JAVA字符串处理函数列表一览
2009-03-14 16:48 2054Java中的字符串也是一连串的字符。但是与许多其他的计算机语言 ... -
StringTokenizer(字符串分析解析类型)(转)
2009-03-14 16:35 3155功效:将字符串以定界符为界,分析为一个个的token(可理解为 ... -
JAVA乱码分析
2009-03-14 16:33 2249UNICODE编码,它采用双字 ... -
java.util.UUID
2008-12-19 18:01 4984GUID是一个128位长的数字,一般用16进制表示。算法的核心 ... -
java应用程序中动态生成PDF文件
2008-12-11 17:05 1216很多应用程序要求动态 ... -
JAVA和JAVAC 命令行
2008-12-11 17:03 2621javac和java命令行中的-classpath选项这是个很 ... -
创建java的可执行文件
2008-12-11 16:59 1419Jar工具的作用是java程序中若干文件联合压缩到一个Jar包 ... -
深入对象复制与比较
2008-12-04 10:09 15441.对象的复制2.clone()的使用3.对象实例的比较/// ... -
解析Java对象的equals()和hashCode()的使用
2008-12-04 10:07 884在Java语言中,equals()和h ...
相关推荐
在Java中,`compare`方法是`Comparator`接口的一个核心方法,用于自定义对象的比较规则。用户可以创建自己的`Comparator`实现来比较特定类型的对象。另外,`Comparable`接口也包含`compareTo`方法,用于比较类的实例...
6. **脚本与插件扩展**:CloudCompare提供脚本接口,允许用户编写自定义脚本来自动化处理流程,或者通过编写插件来扩展其功能。 7. **GIS集成**:具备地理信息系统(GIS)功能,可以处理带有地理坐标信息的点云,...
`IComparer<T>`接口包含一个方法:`Compare(T x, T y)`。这个方法返回一个整数值,表示`x`和`y`的相对顺序。如果`x`小于`y`,返回负数;如果`x`等于`y`,返回零;如果`x`大于`y`,返回正数。在实现`IComparer<T>`时...
源代码中的模块化设计使得这部分工作变得相对容易,只需要遵循已有的编程规范和接口设计即可。 总之,CloudCompare的源代码是一份宝贵的学习资源,无论你是想深入理解3D点云处理、图形界面设计还是进行软件开发,都...
源码通常包括C++或其他编程语言编写的类库,这些类库实现了与Notepad++接口的交互,以及文件比较的具体算法。通过阅读和分析源码,我们可以了解到插件如何集成到Notepad++的事件处理机制中,以及如何高效地比较和...
在方法一中,可能可以定义一个Compare接口,包含isGreaterThan()和isLessThan()等方法,用于比较元素大小。 - **抽象类(Abstract Class)**:Sorter类被声明为抽象类,包含了sort方法的抽象定义,以及非抽象方法如...
6. 强大的脚本支持:对于高级用户,Beyond Compare 3提供了命令行工具和脚本接口,可以集成到自动化工作流程中,实现批量对比和同步任务。 7. 多语言支持:Beyond Compare 3不仅界面友好,还支持多种语言,包括简体...
8. **脚本化操作**:通过命令行接口,Beyond Compare可以被集成到自动化脚本中,实现批量的文件或文件夹比较任务。 9. **报告生成**:对比结果可以导出为HTML或文本报告,便于分享和存档。 在实际使用中,"Beyond ...
`Comparator`接口同样有一个`compare(T o1, T o2)`方法,用来比较两个对象。通常,我们会在需要定制排序逻辑的场景中使用`Comparator`,比如在集合框架中的排序操作。 ```java List<String> list = Arrays.asList(...
对于高级用户,深入理解其内部算法和编程接口,可以实现更多高级功能。社区论坛是获取帮助和分享经验的良好平台,也有众多插件和脚本资源可供探索和使用。 总之,CloudCompare是一款强大且易用的点云处理软件,无论...
标题“compare”可能指的是在IT领域中比较两个对象或数据结构的过程,这通常涉及到编程中的逻辑和算法。在这个场景下,我们可能是在讨论如何比较不同的数据类型,如字符串、数字或者自定义对象,或者是在比较文件、...
在cn.com.my包中,封装一个接口Sortable,包括一个抽象方法int compare( Sortable s),表示需要进行比较大小,返回正数则表示大于,返回负数则表示小于,返回0则表示等于。封装一个类Student,要求实现此接口,必须...
使用AutoIt进行Excel比对的优点在于,它可以轻松地与Excel接口,无需深入了解VBA(Visual Basic for Applications)等复杂编程语言。 关于"BOM Compare Utility.au3"这个文件,它是AutoIt脚本的源代码文件。用户...
实现Comparator接口需要覆盖compare()方法,以便比较两个对象的大小。例如,我们可以定义一个PersonComparator类,并实现Comparator接口,并覆盖compare()方法,以便比较Person类的对象的大小。 应用场景:...
`Comparator<T>`是Java.util包中的一个接口,它提供了一个`compare(T o1, T o2)`方法,用于比较两个对象的顺序。 实验中,创建了三个实现Comparator接口的类:CompareName、CompareBirthday和CompareAge。每个类都...
- 插件模块提供了一套扩展接口,允许用户安装和管理第三方插件,以增强CloudCompare的功能。 ### 六、3DViews——3D视角 - **New——新建视图**:创建一个新的3D视图窗口。 - **Zoomin——放大**:增加视图的缩放...
这里的`where T : IComparable<T>`表示`T`必须实现`IComparable<T>`接口,这样我们就可以在`Compare`方法中安全地使用`CompareTo`方法。 三、多态性与泛型接口 泛型接口提供了多态性,使得可以创建通用的算法和...
源码中包含插件接口和加载机制,开发者可以通过编写C++插件扩展软件功能。 8. **数据管理**:源码中包含了对点云数据的高效存储和检索策略,如分块加载、索引构建等,以优化大模型的处理性能。 9. **脚本支持**:...
9. 脚本化操作:通过命令行接口,Beyond Compare可以被集成到自动化脚本中,实现批量的文件比对和同步任务。 10. 多语言支持:Beyond Compare支持多种语言界面,方便全球用户使用。 总结来说,Beyond Compare是一...
在 CompareTest 类中,我们实现了 compare() 方法,该方法用于比较两个 Simple 对象的年龄,并返回一个整数值,该值表示第一个对象是否小于、等于或大于第二个对象。 在 main() 方法中,我们创建了一个 Simple 对象...