【发布时间】:2017-03-19 07:25:22
【问题描述】:
我有一个名为“sortList”的 ArrayList。我正在向它添加对象。对象的类型为“MailItem”。我想根据对象的(项目)getPriorityLevel() 对我的 ArrayList 进行排序。我该怎么做?
附加信息:getPriorityLevel() 返回一个字符串。
这是我到目前为止所做的:
package strategies;
import java.util.ArrayList;
import automail.IMailSorter;
import automail.MailItem;
import automail.StorageTube;
public class MailSorter implements IMailSorter{
MailItem item;
private ArrayList<MailItem> sortList =new ArrayList<MailItem>();
public void addToList(MailItem item)
{
if (item.getPriorityLevel()=="High")
{
MailItem highPriorityItem= new MailItem(item.getDestFloor(), item.getSize(), item.getPriorityLevel(), item.getArrivalTime() );
sortList.add(highPriorityItem);
}
if (item.getPriorityLevel()=="Medium")
{
MailItem mediumPriorityItem=new MailItem(item.getDestFloor(), item.getSize(), item.getPriorityLevel(), item.getArrivalTime() );
sortList.add(mediumPriorityItem);
}
if (item.getPriorityLevel()=="Low")
{
MailItem lowPriorityItem=new MailItem(item.getDestFloor(), item.getSize(), item.getPriorityLevel(), item.getArrivalTime() );
sortList.add(lowPriorityItem);
}
}
@Override
public boolean fillStorageTube(StorageTube tube) {
// TODO Auto-generated method stub
return false;
}}
【问题讨论】:
-
您在
addToList()的3 个if语句中做完全相同的事情,那么if语句的意义何在? -
根本不要使用 Arraylist。使用 PriorityQueue,这样您的对象在添加时始终保持排序
-
@Guy:不,这个问题是问我们如何做一些上面的代码甚至没有尝试做的事情。但是带有字符串的
==肯定是代码中的a问题...