我是靠谱客的博主 超级刺猬,最近开发中收集的这篇文章主要介绍Comparable接口的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 为一个类定义泛型类型,需要将泛型类型放在类名之后,例如GenericStack.为一个方法定义泛型类型,要将泛型类型放在方法返回类型之前,例如 void max(E o1, E o2)。
2 Comparable接口
假设要设计一个找出两个相同类型对象中较大者的通用方法。这里的对象可以是两个学生、两个日期、两个圆、两个矩形或者两个正方形。为了实现这个方法,这两个对象必须是可比较的。因此,这两个对象都该有的共同行为就是comparable(可比较的)。为此,Java提供了Comparable接口。
接口的定义如下

public interface Comparable<E>{
	public int compareTo(E o);
	}

compareTo方法判断这个对象相对于给定对象o的顺序,并且当这个对象小于、等于或大于给定对象o时、分别返回 负整数、0或正整数。当判断为正整数时就会放在给定对象o的后面
Java类库中的许多类实现了Comparable接口以定义对象的自然顺序。Byte,short,Integer,Long,Float,Double,Character,BigInteger,BigDecimal,Calendar,String以及Date类。
如果对象是Comparablee接口类型的实例的话,JavaAPI中的java.util.Arrays.sort(Object[])方法就可以使用compareTo方法来对数组中的对象进行比较和排序。

public class SortComparableObjects{
	public static void main(String[] args){
		String[] cities = {"Savannah", "Boston", "Atlanta", "Tempa"};
		java.util.Arrays.sort(cities);
		for (String city: cities)
		System.out.print(city + " ");
		System.out.println();
		
		BigInteger[] hugeNumbers = { new BigInteger("323121414322131545"),
		 new BigInteger("129319237184194289641"),
		  new BigInteger("1239129814714014")};
		  java.util.Arrays.sort(hugeNumbers);
		for (BigInteger number: hugeNumbers)
		System.out.print(number + " ");
		System.out.println();
		}
		}
		

运行结果如下
在这里插入图片描述
如果是要对没有实现Conparable接口的类进行排序,则要先实现Comparable。

public class ComparableRectangle extends Rectangle implements Comparable<ComparableRectangle> {
	double width;
	double height;
		public ComparableRectangle(double width, double height) {
			this.width = width;
			this.height = height;
		}
		
		public double getArea() {
			return width*height;
		}
		@Override
		public int compareTo(ComparableRectangle o) {
			return (int)(getArea() - o.getArea());
		}
		@Override
		public String toString() {
			return super.toString() + "width" + " = " +width + "  " + 
			"height" + " = " + height + "  " + " Area: " + getArea();
		}
		public static void main(String[] args) {
			ComparableRectangle[] rectangles = {
					new ComparableRectangle(3.4,5.4),
					new ComparableRectangle(12.24,52.4),
					new ComparableRectangle(7.4,15.4),
					new ComparableRectangle(1.4,25.4) };
			java.util.Arrays.sort(rectangles);
			for(Rectangle rectangle: rectangles) {
				System.out.println(rectangle.toString() + " ");
				
			}
			
					
			}
		}


运行结果如下
在这里插入图片描述
(从结果可以看出 先调用了子类的数据域,而不是父类,当然如果你把子类的参数删了,在参数类型正确的情况下也不会报错)

最后

以上就是超级刺猬为你收集整理的Comparable接口的使用的全部内容,希望文章能够帮你解决Comparable接口的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部