可以先参考一下前面的一篇文章:
为了比较,让自己的类实现Comparable接口,重写compareTo
在自己定义的类中比较两个
Name.java
package comparable;
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;
}
}
NameSort.java
package comparable;
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());
}
}
}
输出结果:
Oscar Grouch
John Lennon
Groucho Marx
Karl Marx
在自己定义的类中比较三个
Name.java
package comparable2;
class Name implements Comparable<Name> {
/*
* 相对于包comparable来说,这个在原来前后2个的比较上实现了前中后3个的比较
* 最重要的是对compareTo方法的书写
* */
public String firstName, centerName, lastName;
public Name(String firstName, String centerName, String lastName) {
this.firstName = firstName;
this.centerName = centerName;
this.lastName = lastName;
}
public int compareTo(Name o) {
int firstCmp = firstName.compareTo(o.firstName);
int centerCmp = centerName.compareTo(o.centerName);
int lastCmp = lastName.compareTo(o.lastName);
if (lastCmp == 0) {
if (centerCmp == 0) {
return firstCmp;
} else {
return centerCmp;
}
} else {
return lastCmp;
}
}
public String toString() { // 便于输出测试
return firstName + " " + centerName + " " + lastName;
}
}
NameSort.java
package comparable2;
import java.util.*;
public class NameSort {
public static void main(String[] args) {
Name[] nameArray = { new Name("c", "b", "a"),new Name("a", "b", "a"),
new Name("c", "a", "b"), new Name("c", "b", "b") };
Arrays.sort(nameArray);
for (int i = 0; i < nameArray.length; i++) {
System.out.println(nameArray[i].toString());
}
}
}
输出结果:(注意:按照last->center->first顺序比较)
a b a
c b a
c a b
c b b
.
分享到:
相关推荐
为了克服这个限制,开发者通常会自定义一个升级版的Collection类,比如题目中的"VB自定义升级版Collection类"。 自定义的Collection类通常会扩展VB原生的Collection功能,增加对键值对的支持。这样,我们可以通过键...
10. **集成到现有项目**:自定义元素可以轻松地集成到任何现有的JavaScript项目中,无论是否使用了框架。只需要在页面中引入自定义元素的脚本,并在适当的地方插入自定义元素标签即可。 总结起来,通过JavaScript...
在上述代码中,我们首先定义了一个名为`MyElement`的自定义元素类,然后使用`regularElements.register`注册了这个类,最后通过`regularElements.upgrade`将`#myElement`这个`<div>`升级为`<my-element>`自定义元素...
在Bootstrap的基础上,自定义UI可能会包含一个具有清晰输入框、按钮和可能的辅助元素(如记住我选项、验证码等)的简洁布局。设计时要注重用户体验,确保输入字段易于辨识,错误提示明确,同时保持整体界面整洁,...
3. **设置视图**:通过`setContentView()`方法将自定义布局加载到Dialog中。这一步将XML布局文件转换为实际的视图对象。 4. **事件处理**:为弹出框上的按钮或其他可交互元素设置点击监听器,实现相应的业务逻辑。...
在本文中,我们将深入探讨如何在Qt环境中创建自定义控件,特别关注“仪表盘”这一特定案例。首先,我们要了解Qt是一个跨平台的应用程序开发框架,广泛用于编写图形用户界面(GUI)应用程序。Qt库提供了丰富的内置...
7. **重用性**:为了提高代码的可维护性和复用性,可以将自定义`MessageBox`封装成一个静态类或独立的用户控件。这样,其他部分的代码只需调用预设的方法即可显示自定义的对话框,而无需关心其内部实现。 8. **响应...
2. 文档记录:像描述中提到的,“留下记录,也许以后有用”,记录自定义字段类型的实现细节和使用方法,以便后续维护和升级。 3. 可扩展性:设计时应考虑未来的需求变化,使字段类型易于扩展和适应新的功能要求。 ...
在TLD文件中,每个`<tag>`元素代表了一个自定义标签的定义。其中: - `<name>`标签表示在JSP页面中使用的标签名称。 - `<tag-class>`标签指定实现了该标签逻辑的Java类的完整路径。 - `<body-content>`标签定义了...
自定义签到 V1.62 是一个专为酷Q机器人设计的插件,它允许用户根据自身需求定制签到功能。酷Q机器人是一款流行的聊天机器人软件,常用于QQ群等社交环境中,提供自动化交互和服务功能。签到功能是其中常见的一种,...
2. **自定义布局**:自定义控件首先需要创建一个新的XML布局文件,这个布局将包含Switch的基本元素,比如两个按钮(开和关)和滑动轨道。可以使用LinearLayout或RelativeLayout作为父布局,然后添加ImageView或者...
在这个“易语言源码易语言自定义打印源码.rar”压缩包中,包含的是一份使用易语言编写的自定义打印功能的源代码。这份源代码对于学习易语言的开发者来说,是非常有价值的参考资料,它可以帮助我们理解和掌握如何在...
全站自定义文本功能的核心在于提供一个中央化的文本编辑平台,用户在这里编辑的文本会全局应用到网站的各个页面。这样,无论网站有多少页面,只要一处修改,全站都会同步更新,避免了传统方式下需要逐页编辑的繁琐...
在现代浏览器中,开发者可以利用CSS3的特性轻松实现表单元素的自定义样式,但是IE8并不支持这些新特性,因此在IE8上实现自定义样式会面临挑战。这个升级版的资源可能包含了一些特别的CSS技巧或JavaScript库,使得在...
2. **实现字段控件**: 自定义字段类型需要提供用户界面(UI)元素,以便用户可以输入或查看数据。这通常通过创建自定义Web部件或使用JavaScript来实现。 3. **实现字段验证逻辑**: 如果字段有特定的输入要求,你需要...
2. **用户界面定制**:通过Visual_XML,用户能够自定义SINUMERIK 808D控制面板上的按钮、文本、图表和其他交互元素。这包括设定元素的位置、大小、颜色、字体,以及响应用户操作的行为。 3. **图形化编程**:工具...
在这个自定义通信协议1中,我们看到的是一个由PC(个人计算机)与STM32(一款常见的微控制器)之间进行固件升级过程的详细流程。STM32的固件升级通常涉及安全性和稳定性,因此通信协议的设计至关重要。 首先,我们...
在2007 Microsoft Office 系统中,微软引入了一个全新的用户界面——功能区(Ribbon UI),旨在提高用户效率和生产力。这个界面取代了传统的菜单、工具栏和任务窗格,采用更加简洁且高效的布局。功能区UI包含了上...
在Java世界中,Java Architecture for XML Binding (JAXB) 是一个强大的工具,用于将Java对象绑定到XML文档,以及从XML文档反序列化为Java对象。这个过程极大地简化了XML数据的处理。然而,在实际使用中,我们可能会...