SortedMap中的key特点:无序不可重复,但是存进去的元素可以按照大小自动排列。
如果想自动排序:key部分的元素需要,1,实现Comparable接口.
2.单独写一个比较器.
import java.util.*;
public class SortedMapTest01{
public static void main(String[]
args){
//Map,key存储Product,value存储重量
//SortedMap products = new
TreeMap();
//匿名内部类(单独写一个比较器)
SortedMap products = new
TreeMap(new Comparator(){
public int
compare(Object o1,Object o2){
double
price1 = ((Product)o1).price;
double
price2 =
((Product)o2).price;
if(price1
return
-1;
}else
if(price1>price2){
return
1;
}else{
return
0;
}
}
});
//准备对象
Product p1 = new
Product("西瓜",1.0);
Product p2 = new
Product("苹果",4.0);
Product p3 = new
Product("桃子",5.0);
Product p4 = new
Product("香蕉",3.0);
//添加
products.put(p1,8.0);
//自动装箱
products.put(p2,3.0);
products.put(p3,4.0);
products.put(p4,10.0);
//遍历
Set keys =
products.keySet();
Iterator it =
keys.iterator();
while(it.hasNext()){
Object k =
it.next();
Object v =
products.get(k);
System.out.println(k+"--->"
+ v +"kg");
}
}
}
//实现Comparable接口
class Product implements Comparable{
String name;
double price;
Product(String name,double price){
this.name = name;
this.price = price;
}
public String toString(){
return
"Product[name="+name+",price="+price+"]";
}
//实现compareTo方法
//需求:按照商品价格排序
public int compareTo(Object
o){
double price1 =
this.price;
double price2 =
((Product)o).price;
if(price1
return
-1;
}else
if(price1>price2){
return
1;
}else{
return
0;
}
}
}
//可以不用实现比较接口,写比较器
class Product{
String name;
double price;
Product(String name,double price){
this.name = name;
this.price = price;
}
public String toString(){
return
"Product[name="+name+",price="+price+"]";
}
}
加载中,请稍候......