gpt4 book ai didi

java - 特许经营类的compareTo方法

转载 作者:行者123 更新时间:2023-12-01 13:17:39 27 4
gpt4 key购买 nike

package prob1;

public class Franchise implements Comparable<Franchise> {
private String location;
private double totals = 0;
private String owner;

public Franchise(String location,double totals,String owner){
this.location = location;
this.totals = totals;
this.owner = owner;
}
public String getLocation(){
return location;
}
public double getTotal(){
return totals;
}
public String getOwner(){
return owner;
}
public int compareTo(Franchise that) {
int stateComparition = this.getLocation().compareTo(that.getLocation());
Double sales = Double.valueOf(this.getTotal());
Double thatSales = Double.valueOf(that.getTotal());
int salesComparition = sales.compareTo(thatSales);

if(stateComparition == 0){
if(salesComparition > 0)
return -1;
else if(salesComparition < 0)
return 1;
else
return 0;
}
return stateComparition;
}

public String toString(){
String result = "";
result = "Owner = " + getOwner() + " ,State = "+ getLocation() + " ,Sales = " + getTotal() + "\n";

return result;
}

}

这个类有一个compareTo方法。我想知道你们能否详细解释一下这个方法是做什么的...基本上我需要你们跟踪它并一步一步地解释我。非常感谢!

package prob1;
import java.util.ArrayList;
import java.util.Collections;

public class FracnahiseTester {

/**
* @param args
*/
public static void main(String[] args) {
ArrayList<Franchise> franchises = new ArrayList<Franchise>();

Franchise franchaise1 = new Franchise("CA",3300,"Corey");
Franchise franchaise2 = new Franchise("GA",1000,"Pato");
Franchise franchaise4 = new Franchise("NC",3300,"Travis");
Franchise franchaise3 = new Franchise("NC",3500,"Roy");

franchises.add(franchaise1);
franchises.add(franchaise2);
franchises.add(franchaise4);
franchises.add(franchaise3);

Collections.sort(franchises);
for(Franchise i : franchises){
System.out.println(i);
}
}

}

这是我的测试仪

最佳答案

尽管您可以从 javadoc 获取此信息,这个答案将有助于访问这里的其他用户理解compareTo()方法的概念。

当您实现Comparable接口(interface)时,您的compareTo()方法用于比较不同的对象,

public int compareTo(Franchise that) {
int stateComparition = this.getLocation().compareTo(that.getLocation());
Double sales = Double.valueOf(this.getTotal());
Double thatSales = Double.valueOf(that.getTotal());
int salesComparition = sales.compareTo(thatSales);

if(stateComparition == 0){
if(salesComparition > 0)
return -1;
else if(salesComparition < 0)
return 1;
else
return 0;
}
return stateComparition;
}
  • public intcompareTo() 用于将作为参数传递的对象与调用此方法的对象进行比较。
  • 如果this对象小于that对象,则返回负整数,在您的情况下为-1。这意味着 this 对象以排序方式排在 that 之前。
  • 如果 this 等于 that 对象,则 0 应该相等,这意味着对象相等。
  • 如果 this 大于 that 对象,则返回一个正整数,在您的情况下,它是 1。这意味着当对Franchise类型的对象进行排序时,this出现在that之后。

关于java - 特许经营类的compareTo方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com