package com.cwa.mail;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class MailBox<T extends Mail> {
private int capacity; // 最多能装多少封邮件
private int newMailId = 1; // 自增ID,从1开始
private LinkedList<T> mails;
public MailBox() {
}
public MailBox(int capacity) {
this.capacity = capacity;
}
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public int getNewMailId() {
return newMailId;
}
public void setNewMailId(int newMailId) {
this.newMailId = newMailId;
}
public List<T> getMails() {
return mails;
}
public void setMails(List<T> mails) {
this.mails = new LinkedList<T>(mails);
}
// 添加新邮件
public void addNewMail(T mail) {
if (capacity > 0 && mails.size() >= capacity) {
// 邮箱满了,把最老的一封邮件删除
mails.pollFirst();
}
mail.setId(newMailId++);
mail.setSentTime(new Date());
mails.add(mail);
}
// 删除ID<=mailId的老邮件
public void deleteMailsOlderThan(int mailId) {
for (Iterator<T> it = mails.iterator(); it.hasNext();) {
T mail = it.next();
if (mail.getId() <= mailId) {
it.remove();
}
}
}
@Override
public String toString() {
return "MailBox{mails=" + (mails == null ? 0 : mails.size()) + '}';
}
}