一、培养细菌
1、(面向对象和集合思想)一个细菌长大需要20分钟,分裂出下一代需要30分钟,150分钟该细菌死亡,输入时间,观察细菌数量;
思路:定义获得细菌方法,传入时间
public static void main(String[] args) {
System.out.println(getBacteria(300));
}
public static int getBacteria(int minute){
int count = 1;
Map<Integer,Integer> map = new ConcurrentHashMap<Integer,Integer>();
//map第一个参数存的是细菌编号,第二个参数存的是存活时间
map.put(count++, 10);
for(int i = 10; i <= minute; i=i+10 ){
System.out.println(map + "时间开始:" + i);
//迭代器循环
Set<Entry<Integer, Integer>> set = map.entrySet();
Iterator<Entry<Integer, Integer>> it = set.iterator();
while(it.hasNext()){
Entry<Integer, Integer> entry = it.next();
//取出key,value
Integer key = entry.getKey();
Integer value = entry.getValue();
//50进行第一次繁殖,80进行第二次繁殖,110进行第三次繁殖
if (value == 50 || value == 80 || value == 110) {
//到出生节点,每个细胞分裂成两个
map.put(count++, 10);
map.put(count++, 10);
}
//150死亡
if(value == 150){
map.remove(key);
} else {
value+=10;
map.put(key, value);
}
}
System.out.println(map.keySet() + "时间结束:" + i);
}
return map.size();
}