博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA排序(一) Comparable接口
阅读量:5295 次
发布时间:2019-06-14

本文共 2466 字,大约阅读时间需要 8 分钟。

昨天接到一个实习公司的电话面试,来的很突然,没有准备。

由于以前没用过,在被他问及是否用过JAVA的排序工具Comparable与Comparator时,没有回答上来,只能实话实说没有用过。

感觉太丢人了~~回去赶紧看看,现在将学到的东西记录下来,同大家分享~~

先说Comparable接口,public interface Comparable<T>。当需要根据类中的成员变量对类进行排序时,只需实现该接口,覆写compareTo方法即可非常方便~~

该接口中只有一个方法--int compareTo( o);

在该方法中可以自己定义成员变量大小“规则”,这里举的例子是降序排列,该方法根据比较的结果(大于、等于、小于)返回整型(-1,0,1)。如下:

 

@Override	public int compareTo(EnvironmentForm env) {		//大于所给温度则返回-1		if(this.temp>env.getTemp()){			return -1;		}else if(this.temp
env.getHum()){ return -1; //小于所给湿度返回1 }else if(this.hum

 

然后通过Arrays类的静态方法--public static void sort(),完成排序。

下面是具体的实现:

首先是自定义一个简单的环境类,包括成员变量(温度、湿度),实现Comparable接口;

 

public class EnvironmentForm implements Comparable
{ /**温度*/ private float temp; /**湿度*/ private float hum; public float getTemp() { return temp; } public void setTemp(float temp) { this.temp = temp; } public float getHum() { return hum; } public void setHum(float hum) { this.hum = hum; } /** * 无参构造 */ public EnvironmentForm(){} /** * 有参构造 * @param temp 温度 * @param hum 湿度 */ public EnvironmentForm(float temp, float hum) { super(); this.temp = temp; this.hum = hum; } @Override public String toString() { return "EnvironmentForm [温度=" + temp + ", 湿度=" + hum + "]\n"; } @Override public int compareTo(EnvironmentForm env) { //大于所给温度则返回-1 if(this.temp>env.getTemp()){ return -1; }else if(this.temp
env.getHum()){ return -1; //小于所给湿度返回1 }else if(this.hum

在主方法中实现温度的降序排列,当温度相等时,进行湿度的降序排列

 

 

package com.example;import java.util.Arrays;public class ComparaTestMain {	public static void main(String[] args) {		EnvironmentForm env[] = {new EnvironmentForm(27.5f,50.1f),				new EnvironmentForm(27.5f,60.1f),				new EnvironmentForm(27.5f,40.1f),				new EnvironmentForm(17.5f,50.1f),				new EnvironmentForm(37.5f,50.1f)};		System.out.println("********排序前********");		System.out.println(Arrays.toString(env));		System.out.println("********排序后********");		Arrays.sort(env);		System.out.println(Arrays.toString(env));	}}

下面为运行结果:

 

 

********排序前********[EnvironmentForm [温度=27.5, 湿度=50.1], EnvironmentForm [温度=27.5, 湿度=60.1], EnvironmentForm [温度=27.5, 湿度=40.1], EnvironmentForm [温度=17.5, 湿度=50.1], EnvironmentForm [温度=37.5, 湿度=50.1]]********排序后********[EnvironmentForm [温度=37.5, 湿度=50.1], EnvironmentForm [温度=27.5, 湿度=60.1], EnvironmentForm [温度=27.5, 湿度=50.1], EnvironmentForm [温度=27.5, 湿度=40.1], EnvironmentForm [温度=17.5, 湿度=50.1]]

 

 

转载于:https://www.cnblogs.com/james1207/p/3291974.html

你可能感兴趣的文章
zencart iis 伪静态设置 测试可用
查看>>
环套树
查看>>
中英文混合字符串长度
查看>>
Linux远程登陆
查看>>
XXFSDDX HDU6119 区间合并模板(交叉区间去重)
查看>>
2.15.JavaScript--函数声明方式
查看>>
BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点
查看>>
linux命令大全
查看>>
spark 笔记 12: Executor,task最后的归宿
查看>>
Linux 两台服务器之间传输文件和文件夹
查看>>
郁闷的 IE6/7/8 所遇兼容问题
查看>>
Python学习-day18 Web框架
查看>>
Python学习-day14-CSS
查看>>
Java使用HttpURLConnection上传文件(转)
查看>>
js判断是安卓 还是 ios webview
查看>>
MyBaits 与 Hibernate 的区别
查看>>
MongoDB出现CPU飚高,如何强制停止正在执行的操作
查看>>
設置sqlplus格式
查看>>
应用层协议
查看>>
前端知识体系
查看>>