加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Java中SortedMap接口集合及实现类TreeMap

(2015-02-03 12:18:26)
标签:

java

sortedmap

treemap

分类: JAVA基础

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+"]";
 }
 
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有