散列原理_设计方案,从车牌号快速地计算出该车辆的大约停车位置

来源:互联网 发布:linux 禅道 编辑:程序博客网 时间:2024/04/29 13:14

/**
* 某停车场容量为1000,编号从1000~1999 且相邻编号位置肯定是相邻的。最高峰大约需要停放800辆车。

假设车牌号码是类似:“京NHK936” 这样的汉字、数字、字母混合。

我们需要一种方案,可以从车牌号快速地计算出该车辆的大约停车位置。这样当有人电话询问某辆车的位置时,只要报一下车牌号就可以了。
*/


import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;

public class CarPark2 {

//汽车牌号的首字母是身份缩写

public enum provinceEnum {
京,津,冀,晋,蒙,辽,吉,黑,沪,苏,浙,皖,闽,赣,鲁,豫,鄂,湘,粤,桂,琼,渝,蜀,贵,滇,藏,秦,甘,青,宁,新,港,澳,台;
}

public static String createStr(){
String str = null;
Random random = new Random();
str = provinceEnum.values()[random.nextInt(34)].toString();
return str;
}
 
public static void main(String[] args) throws UnsupportedEncodingException {
Set<String> carNos = new HashSet<String>();
Random random=new Random();
while (carNos.size()<1000) {
char c1=(char)(65+random.nextInt(25));
char c2=(char)(65+random.nextInt(25));
char c3=(char)(65+random.nextInt(25));
carNos.add(createStr()+c1+c2+c3+random.nextInt(9)+random.nextInt(9)+random.nextInt(9));//计算出车牌号
}
Map<Integer,String> map=new HashMap<Integer,String>();
Iterator iterator=carNos.iterator();
int index=1000;
while (iterator.hasNext()) {
map.put(index, iterator.next().toString());
index++;
}
//  System.out.println(map.get(1000));
//  System.out.println(map.get(1999));
  
  //刚出现不断变换数据是由于java的内存机制,每次执行完程序,
  //系统自动回收内存,即数据没有真实存储。这里解决方法是通过死循环控制解决的。


  while (true) {
   System.out.println("请查询1000到1999中车辆的信息:输入0000推出");
   Scanner scanner=new Scanner(System.in);
   int key=scanner.nextInt();
   System.out.println(map.get(key));
   if (key==0000) {
    System.out.println("----------谢谢-----------");
    break;
   }
  }

}



0 0
原创粉丝点击