62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class PropTest{
public static void main(String[] args){
Product p1 = new Product("西瓜",1.0);
Product p2 = new Product("桃子",6.0);
Product p3 = new Product("苹果",4.0);
Product p4 = new Product("草莓",2.0);
Product p5 = new Product("樱桃",12.0);
SortedMap pr = new TreeMap();
pr.put(p1,"10kg");
pr.put(p2,"20kg");
pr.put(p3,"11kg");
pr.put(p4,"13kg");
pr.put(p5,"14kg");
System.out.println(pr.size());
Set s = pr.keySet();
Iterator it = s.iterator();
while(it.hasNext()){
Object o1 = it.next();
Object v = pr.get(o1);
System.out.println("key:"+o1+",value:"+v);
}
}
}
class Product implements Comparable{
String name;
double price;
Product(String name,double price){
this.name = name;
this.price = price;
}
public String toString(){
return "[name:"+name+" price:"+price+"]";
}
public int compareTo(Object o){
Product o1 = (Product)o;
double price1 = this.price;
double price2 = o1.price;
if(price1>price2){
return 1;
}else if(price1>price2){
return -1;
}else return 0;
}
}
基于红黑树(Red-Black tree)的 NavigableMap 实现。
该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的
Comparator 进行排序,具体取决于使用的构造方法。
1. 你题目要想显示5的话改下价钱就行,你把价钱改成都大于前面那个数的话。
2. 但是真正的地方还是你的comparable里面的compareto方法设定的出错。直接如下:
return (int) (o1.price - o2.price);
这样的话如果两个product价格一样的话只会显示一个。因为返回 0 。else if(price1>price2){
return -1;
}else return 0;
}
改成price1<price2[/quote]
好吧,我承认我粗心了,没去仔细检查,多谢!else if(price1>price2){
return -1;
}else return 0;
}
改成price1<price2[/quote]
同意楼上,楼主要注意啦!else if(price1>price2){
return -1;
}else return 0;
}
改成price1<price2