首页编程java编程java 比较器是什么(java 中compare 是什么)

java 比较器是什么(java 中compare 是什么)

编程之家2023-10-14101次浏览

各位老铁们,大家好,今天由我来为大家分享java 比较器是什么,以及java 中compare 是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

java 比较器是什么(java 中compare 是什么)

java的comparable接口什么意思

1.什么是Comparable接口

此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,类的 compareTo方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。强烈推荐(虽然不是必需的)使自然排序与 equals一致。所谓与equals一致是指对于类 C的每一个 e1和 e2来说,当且仅当(e1.compareTo((Object)e2)== 0)与e1.equals((Object)e2)具有相同的布尔值时,类 C的自然排序才叫做与 equals一致。

2.实现什么方法

java 比较器是什么(java 中compare 是什么)

int compareTo(T o)

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

强烈推荐(x.compareTo(y)==0)==(x.equals(y))这种做法,但不是严格要求这样做。一般来说,任何实现 Comparable接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals不一致的自然排序。”

java 比较器是什么(java 中compare 是什么)

参数:

o-要比较的对象。

返回:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。

抛出:

ClassCastException-如果指定对象的类型不允许它与此对象进行比较。

3.实例

import java.util.*;

public class EmployeeSortTest{

/**

*@param args

*/

public static void main(String[] args){

// TODO Auto-generated method stub

Employee[] staff= new Employee[ 3 ];

staff[ 0 ]= new Employee("harry Hacker", 35000);

staff[ 1 ]= new Employee("carl cracke", 75000);

staff[ 2 ]= new Employee("tony Tester", 38000);

Arrays.sort(staff);//sort方法可以实现对对象数组排序,但是必须实现 Comparable接口

/*Comparable接口原型为:

* public interface Comparable<T>

*{

* int compareTo(T other);//接口的中方法自动属于public方法

*}

*/

for(Employee e: staff)

System.out.println("id="+e.getId()+" name="+e.getName()+

".salary="+e.getSalary());

}

}

/*

*因为要实现对Employee对象的排序,所以在Employee类中要实现Comparable接口,

*也就是要实现comepareTo()方法

*/

class Employee implements Comparable<Employee>

{

public Employee(String n, double s)

{

name= n;

salary= s;

Random ID= new Random();

id= ID.nextInt( 10000000);

}

public int getId()

{

return id;

}

public String getName()

{

return name;

}

public double getSalary()

{

return salary;

}

public void raiseSalary( double byPercent)

{

double raise= salary*byPercent/ 100;

salary+=raise;

}

public int compareTo(Employee other)

{

if(id<other.id)//这里比较的是什么 sort方法实现的就是按照此比较的东西从小到大排列

return- 1;

if(id>other.id)

return 1;

return 0;

}

private int id;

private String name;

private double salary;

}

4.与Comparator的区别

Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过 Comparator来实现比较算法进行排序,并且为了使用不同的排序标准做准备,比如:升序、降序。

我们看一个Comparator的例子:

import java.util.TreeSet;

import java.util.Comparator;

class NumComparator implements Comparator<NameTag>{

public int compare(NameTag left,NameTag right){

return(left.getNumber()- right.getNumber());

}

}

public class CollectionNine{

public static void main(String arg[]){

new CollectionNine();

}

CollectionNine(){

NumComparator comparator= new NumComparator();

TreeSet<NameTag> set= new TreeSet<NameTag>(comparator);

set.add(new NameTag("Agamemnon",300));

set.add(new NameTag("Cato",400));

set.add(new NameTag("Plato",100));

set.add(new NameTag("Zeno",200));

set.add(new NameTag("Archimedes",500));

for(NameTag tag: set)

System.out.println(tag);

}

}

看不明白欢迎再来询问

java中的queue类是什么,啥作用

java中的queue类是队列数据结构管理类。在它里边的元素可以按照添加它们的相同顺序被移除。

队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头都是调用remove()或poll()所移除的元素。在 FIFO队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个Queue实现必须指定其顺序属性。

offer添加一个元素并返回true如果队列已满,则返回false

poll移除并返问队列头部的元素如果队列为空,则返回null

peek返回队列头部的元素如果队列为空,则返回null

put添加一个元素如果队列满,则阻塞

take移除并返回队列头部的元素如果队列为空,则阻塞

element返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常

add增加一个元索如果队列已满,则抛出一个IIIegaISlabEepeplian异常

remove移除并返回队列头部的元素如果队列为空,则抛出一个

NoSuchElementException异常

注意:poll和peek方法出错进返回null。因此,向队列中插入null值是不合法的。

还有带超时的offer和poll方法重载,例如,下面的调用:

boolean success= q.offer(x,100,TimeUnit.MILLISECONDS);

尝试在100毫秒内向队列尾部插入一个元素。如果成功,立即返回true;否则,当到达超时进,返回false。同样地,调用:

Object head= q.poll(100, TimeUnit.MILLISECONDS);

如果在100毫秒内成功地移除了队列头元素,则立即返回头元素;否则在到达超时时,返回null。

阻塞操作有put和take。put方法在队列满时阻塞,take方法在队列空时阻塞。

Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue继承了Queue接口。

java 中compare 是什么

public int compareTo(Double anotherDouble)从数字上比较两个 Double对象。在应用到基本 double值时,通过此方法进行的比较与通过 Java语言的数值比较运算符(<、<=、==和>=>)进行的比较之间存在以下两方面的不同:

此方法认为 Double.NaN等于它自身,且大于其他所有 double值(包括 Double.POSITIVE_INFINITY)。

此方法认为 0.0d大于-0.0d。

这可以确保受此方法影响的 Double对象的自然顺序与 equals方法一致。

指定者:

接口 Comparable<Double>中的 compareTo

参数:

anotherDouble-要比较的 Double值。

返回:

如果 anotherDouble在数字上等同于此 Double,则返回 0;如果 Double在数字上小于此 anotherDouble,则返回小于 0的值;如果 Double在数字上大于此 anotherDouble,则返回大于 0的值。

打字不易,如满意,望采纳。

文章到此结束,如果本次分享的java 比较器是什么和java 中compare 是什么的问题解决了您的问题,那么我们由衷的感到高兴!

java中的方法是什么,java编程中的“方法”是什么意思第三世界国家(第二世界国家)