2014-03-12 4 views
0
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 method.I было интересно, если вы, ребята, можете мне объяснить в деталях, что делает этот метод ... в основном я хочу, чтобы ты, ребята, чтобы отследить и объяснить мне, шаг за шагом .Большое спасибо!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); 
     } 
    } 

} 

Это мой тестер

+1

Это не соответствует формату вопроса. Есть ли что-то особенное, что не работает, для которого вы не можете найти простой ответ в документации или в другом месте на своих сайтах? Кажется, что это вопрос домашней задачки, с которым вам трудно справиться? – Kirby

+0

это проблема hw, но работает совершенно правильно, но я просто хотел убедиться, как это работает –

ответ

2

Хотя вы можете получить эту информацию от javadoc, этот ответ поможет понять концепцию CompareTo (метод) для других пользователей, которые бросают на здесь.

Когда вы реализуете Comparable интерфейс, ваш метод 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 int compareTo() используется для сравнения объекта, переданного в качестве аргумента с объектом, который вызывает этот метод.
  • Если this объект не имеет значения that объект, отрицательное целое число возвращается, в вашем случае его -1. Это означает, что объекты this на первом месте до that в отсортированном виде.
  • Если this равно that, то 0 должен быть равен, что означает, что объекты равны.
  • Если this больше that объект, чем положительное целое число возвращается, в вашем случае это 1. Это значит, что this ПОСЛЕ that, когда отсортировано по объектам .
Смежные вопросы