0
(請注意,這是一個初學者問題)從LIFO命令列表中獲取對象? (後進先出)(初學者)
我有兩個類; MailItem
和MailServer
。我有一個測試類,在那裏我發送和發送MailItem到我的MailServer。我向一個特定用戶發送MailItems,我希望以LIFO順序(後進先出)檢索這些郵件,因此發送的最新郵件必須是我收到的第一個郵件。
這是我的課程。
的MailItem類:
public class MailItem
{
private String from;
private String to;
private String message;
private String subject;
public MailItem(String from, String to, String message, String subject)
{
this.from = from;
this.to = to;
this.message = message;
this.subject = subject;
}
public String getFrom()
{
return from;
}
public String getTo()
{
return to;
}
public String getSubject(){
return subject;
}
public String getMessage()
{
return message;
}
public void print()
{
System.out.println("From: " + from);
System.out.println("To: " + to);
System.out.println("Message: " + message);
System.out.println("Subject: " + subject);
}
}
郵件服務器類:
public class MailServer
{
private List<MailItem> items;
private HashMap<String, List<MailItem>> hashmap;
public int howManyMessages(){
return items.size();
}
public int howManyUsers(){
return hashmap.size();
}
public MailServer()
{
items = new LinkedList<MailItem>();
hashmap = new HashMap<String, List<MailItem>>();
}
public int howManyMailItems(String who)
{
int count = 0;
for(MailItem item : items) {
if(item.getTo().equals(who)) {
count++;
}
}
return count;
}
public MailItem getNextMailItem(String who)
{
Iterator<MailItem> it = items.iterator();
while(it.hasNext()) {
MailItem item = it.next();
if(item.getTo().equals(who)) {
it.remove();
return item;
}
}
return null;
}
public void post(MailItem item)
{
if(!isEmpty(item)){
items.add(item);
}
}
private boolean isEmpty(MailItem mail){
if(mail.getFrom() == "" || mail.getTo() == ""){
return true;
}
return false;
}
public int createMailbox(String user){
if(hashmap.containsKey(user)){
return 0;
}
List<MailItem> mil = new ArrayList<MailItem>();
hashmap.put(user, mil);
return 1;
}
public int createMailbox(String[] users){
int createdBoxes = 0;
for(String user: users){
int created = createMailbox(user);
if(created == 1){
createdBoxes++;
}
}
return createdBoxes;
}
private List<MailItem> getMailbox(String who){
if(hashmap.containsKey(who)){
List<MailItem> ls = hashmap.get(who);
return ls;
}else{
return null;
}
}
}
下面是我的測試樣子:
@Test
public void testReceiveOrder(){
mailServer.post(mess1User1to2);
mailServer.post(mess2User1to2);
assertEquals(mess2User1to2,mailServer.getNextMailItem("user2"));
}
當我運行這個測試時,我以FIFO(先進先出)方式檢索這些電子郵件。而不是檢索郵件mess2User1to2,我得到mess1User1to2。我嘗試使用LinkedList在LIFO中檢索它們,但它不適用於我。我做錯了什麼?
謝謝,我用了第二部分,因爲它沒有打破其他方法。 –