一、培养细菌

1、(面向对象和集合思想)一个细菌长大需要20分钟,分裂出下一代需要30分钟,150分钟该细菌死亡,输入时间,观察细菌数量;
思路:定义获得细菌方法,传入时间image.png

  1. public static void main(String[] args) {
  2. System.out.println(getBacteria(300));
  3. }
  4. public static int getBacteria(int minute){
  5. int count = 1;
  6. Map<Integer,Integer> map = new ConcurrentHashMap<Integer,Integer>();
  7. //map第一个参数存的是细菌编号,第二个参数存的是存活时间
  8. map.put(count++, 10);
  9. for(int i = 10; i <= minute; i=i+10 ){
  10. System.out.println(map + "时间开始:" + i);
  11. //迭代器循环
  12. Set<Entry<Integer, Integer>> set = map.entrySet();
  13. Iterator<Entry<Integer, Integer>> it = set.iterator();
  14. while(it.hasNext()){
  15. Entry<Integer, Integer> entry = it.next();
  16. //取出key,value
  17. Integer key = entry.getKey();
  18. Integer value = entry.getValue();
  19. //50进行第一次繁殖,80进行第二次繁殖,110进行第三次繁殖
  20. if (value == 50 || value == 80 || value == 110) {
  21. //到出生节点,每个细胞分裂成两个
  22. map.put(count++, 10);
  23. map.put(count++, 10);
  24. }
  25. //150死亡
  26. if(value == 150){
  27. map.remove(key);
  28. } else {
  29. value+=10;
  30. map.put(key, value);
  31. }
  32. }
  33. System.out.println(map.keySet() + "时间结束:" + i);
  34. }
  35. return map.size();
  36. }