searchDatabase方法将接受查询字符串并搜索ArrayList以查看该对象是否包含查询(您的搜索应该不区分大小写!)作为名称或属于该对象类型(提示:使用instanceof来检查对象类型)。它将返回一个ArrayList,其中包含其对象包含查询字符串的所有值。
我需要查看查询是否与类名相同(例如Don / Talent / Overseer),如果是,则打印该类型的所有对象。如果它等于其中一个对象中的名称,那么我只是打印出该对象。我很困惑从这里做什么。我循环遍历数据库中的所有goons并检查它们是否是Don / Overseer / Talents的实例,如果他们正在检查用户查询是否等于对象类型,是否打印所有这些对象但是如果它不是然后检查它是否等于arraylist中“Dom”类型的任何对象的名称。
protected ArrayList<Goon> searchDatabase(String query)
{
ArrayList<Goon> clone = new ArrayList<Goon>();
for(Goon a : goonDB)
{
if(a instanceof Don)
{
if(query.equalsIgnoreCase("don"))
{
}
else
{
if(a.getName().equals(query))
{
}
}
}
else if(a instanceof Overseer)
{
}
答案 0 :(得分:0)
你的问题陈述含糊不清,这是我的假设:
我不想为你编写代码,因为这看起来像是一个家庭作业,你可以稍微挣扎一下,但这里有一个逻辑,你需要用来遵循上面的假设:< / p>
我首先检查查询是否是Don / Talent / Overseer。如果是,则遍历列表并将该类型的所有对象(instanceof)添加到克隆列表中。如果不是,则浏览整个列表并添加名称与查询匹配的列表。退回清单。
答案 1 :(得分:0)
虽然我看到你已经弄明白了。我仍然想发布我的答案:P(否则我什么都没做)。也许其他有相同问题的人可以使用它。我认为Don和Overseer顺便实施了Goon。作为一个解决方案,我只是在数据库上循环检查查询和类名是否匹配。
我还添加了一个主要方法来测试搜索代码。正如您在输出中看到的那样,只打印了Don's
。
package stackoverflow.question_26510341;
import java.util.ArrayList;
import java.util.Iterator;
public class Search {
static ArrayList<Goon> goonDB = new ArrayList<Goon>();
public static void main(String[] args){
goonDB.add(new Don());
goonDB.add(new Don());
goonDB.add(new Overseer());
ArrayList<Goon> list = searchDatabase("Don");
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
protected static ArrayList<Goon> searchDatabase(String query){
ArrayList<Goon> clone = new ArrayList<Goon>();
Iterator<Goon> iterator = goonDB.iterator();
Goon temp;
while(iterator.hasNext()){
if(query.equals("Don") && (temp = iterator.next()) instanceof Don){
clone.add(temp);
}else if(query.equals("Overseer") && (temp = iterator.next()) instanceof Overseer){
clone.add(temp);
}//etc...
}
return clone;
}
private static interface Goon{
}
private static class Overseer implements Goon{
}
private static class Don implements Goon{
}
}