Algorithm 瑞鼎思必得

来源:互联网 发布:猎枪缩口数据 编辑:程序博客网 时间:2024/04/30 00:46



public class ReadingSpeed {

 Map<Integer, Customer> customerMap = new Hashtable<Integer, Customer>();
 // 输入customerMap的数据
   // while(customerStream.hasNext()){
   // Customer customer= customerStrem.next();
   // customerMap.put(customer.getId(),customer);
 
         //bookid 
 Map<Integer,Map<Integer,Customer>> bookReaderMap = new Hashtable<Integer,Map<Integer,Customer>>();  

 
 
 void updateReadingSpeeds(int customerID, int bookID, int pageNumber){
 if(bookReaderMap.containsKey(bookID)){
  Map<Integer, Customer> readers=bookReaderMap.get(bookID);
  if(readers.containsKey(customerID)){//有客户
   Customer customer=readers.get(customerID);
   customer.reFresh(pageNumber);
   readers.put(customerID, customer);
   bookReaderMap.put(bookID, readers);
  }else{//没客户
   Customer customer=new Customer(customerID);
   customer.reFresh(pageNumber);
   readers.put(customerID, customer);
   bookReaderMap.put(bookID, readers);
  }
 }else{ //假如连这本书都没有 那肯定也是还没有读这本书的客户了
  Map<Integer,Customer> readers=new Hashtable<Integer, Customer>();
  Customer customer=readers.get(customerID);
  customer.reFresh(pageNumber);
  readers.put(customerID, customer);
  bookReaderMap.put(bookID, readers);
  }
  
 }
  
 void printLeaderboard(int bookID) {
  List<Customer> rank= new ArrayList<Customer>();
  if(!bookReaderMap.containsKey(bookID)){
   System.out.println("no such book");
  }else{
   Map<Integer,Customer> readers=bookReaderMap.get(bookID);
            Iterator<Integer> iter=readers.keySet().iterator();
            while(iter.hasNext()){
             Integer customerId=(Integer) iter.next();
             Customer customer=readers.get(customerId);
                rank.add(customer); 
            }
    Collections.sort(rank,new SortByReadingSpeed());
    int i=0;
    for (Customer customer : rank) {
    i++;
     System.out.println(customer.getID()+"  "+customer.getSpeed()+"  "+i);
      }
  
  
  }
  
  
 }
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub

 }

 private static final class SortByReadingSpeed implements Comparator<Customer> {

  public int compare(Customer o1, Customer o2) {
   int compare = o2.getSpeed() - o1.getSpeed();
  return compare;

  }
 }
}
 

——————————————————————————————————————————————————————————-


public class Customer {
private int ID;
private List<Integer> page;
private int speed=0;

public Customer(int ID){
 this.ID=ID;
 this.page=new ArrayList<Integer>();
}
public int getID() {
 return ID;
}
public void setID(int iD) {
 ID = iD;
}
public List<Integer> getPage() {
 return page;
}
public void setPage(List<Integer> page) {
 this.page = page;
}

public void reFresh(int pageNum){
 this.page.add(pageNum);
}
public int getSpeed() {
 return speed;
}
public void setSpeed(List<Integer> pages) {
 int maxSpeed=0;
 int time=pages.size()-1;
 for(int i=0;i<10;i++){
  if(time<=1){
   break;
  }
  int currentSpeed=pages.get(time)-pages.get(time-1);
  time--;
  if(currentSpeed>maxSpeed){
   maxSpeed=currentSpeed;
  }
 }
 this.speed=maxSpeed;
}


}

0 0
原创粉丝点击