2012-01-02 27 views
27
import java.util.HashMap; 
import java.io.*; 
import java.util.*; 
public class Fegan implements Comparable{ 
HashMap<String, Integer> cart = new HashMap<String, Integer>(); 
List list = new ArrayList<FoodItems>(); 
int x =0; 
public void addToCart(FoodItems f) 
{ 
    cart.put(f.name, f.valueOfFood); 
} 
public String display(FoodItems f) 
{ 
    return(f.name + " costs " + f.valueOfFood); 
} 
public void addToList(FoodItems f) 
{ 
    //FoodItems temp = (FoodItems) f; 
    list.add(f); 
} 
public int compareTo(Object o) 
{ 
    //FoodItems temp = (FoodItems) o; 
    if(this.x == ((FoodItems)o).valueOfFood) 
     return 0; 
    else if (this.x <((FoodItems)o).valueOfFood) 
     return 1; 
    else 
     return -1; 
} 
public void sortMap(List list) 
{ 
    for(int i =0; i< list.size(); i++) 
    { 
     FoodItems temp = (FoodItems) list.get(i); 
     cart.put(temp.name, temp.valueOfItem); 

    } 
} 
} 

import java.util.Collections; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.io.*; 
import java.util.*; 
public class Test { 
public static void main(String [] args) 
{ 
    HashMap<String, Integer> cart = new HashMap<String, Integer>(); 
    FoodItems firts = new FoodItems("Chocolate" , 50); 
    FoodItems second = new FoodItems("Juice", 79); 
    FoodItems third = new FoodItems("Apple", 200); 
    FoodItems forth = new FoodItems("Orange", 300); 
    FoodItems fifth = new FoodItems("Milk" , 400); 
    ArrayList items = new ArrayList(); 
    items.add(firts); 
    items.add(second); 
    items.add(third); 
    items.add(forth); 
    items.add(fifth); 
    Collections.sort(items); 
    Iterator itr = items.iterator(); 
    Fegan myFegan = new Fegan(); 
    myFegan.sortMap(items); 

    while(itr.hasNext()){ 
     Object element = itr.next(); 
     System.out.println(element + "\n"); 
    } 
} 
} 

Tại sao nó được writtingkhông thể được đúc để java.lang.Comparable

Exception in thread "main" java.lang.ClassCastException: FoodItems cannot be cast to java.lang.Comparable 
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) 
at java.util.ComparableTimSort.sort(Unknown Source) 
at java.util.ComparableTimSort.sort(Unknown Source) 
at java.util.Arrays.sort(Unknown Source) 
at java.util.Collections.sort(Unknown Source) 
at Test.main(Test.java:21) 

Cảm ơn bạn trước!

+0

Đăng nguồn cho FoodItems – AlanFoster

Trả lời

16
  • đối tượng triển khai ComparableFegan.

Phương pháp compareTo bạn đang đặt giá trị cao trong trường hợp bạn phải đặt đối tượng Fegan làm tham số trong khi bạn đang truyền đến FoodItems. Việc triển khai compareTo của bạn nên mô tả cách so sánh số Fegan với một số Fegan khác.

  • Để thực sự sắp xếp của bạn, bạn có thể muốn làm FoodItems thực hiện Comparable là tốt của bạn và sao chép dán thực tế compareTo logic của bạn trong đó.
Các vấn đề liên quan