从数组中洗出特定对象

Shuffle out a specific object from array

我有一个存储不同哺乳动物的数组,存储在哺乳动物数组中的对象是我用这段代码创建的狗、猫等:

Mammals obj = new Cats();
Mammals obj = new Dogs();

etc....

现在我想从数组中洗出一个特定的对象,只是为了打印出来。假设我想从此 printCat 方法打印出一个猫对象 - 如何修改下面的代码以确保只有猫对象被洗牌?

public static void printCat() {

    Mammals item;

    int index = shuffleArray.nextInt(mammals.size());
    item = mammals.get(index);

    System.out.println(item);
}

您可以使用:

if(item instanceof Cat){
    System.out.println(item);
}else{
    //it is not cat
}
public static void printCat() {
    Mammal result;

    do 
    {
        int index = shuffleArray.nextInt(mammals.size());
        result = mammals.get(index);
    } while (!(result instanceof Cat));

    System.out.println(result);
}

一个警告...确保哺乳动物集合在 运行 之前包含一只猫,否则您将陷入无限循环。您也可以考虑修改它,这样您就不会 select 多次使用相同的哺乳动物。