如何使用收集对象打印所有动物

时间:2018-07-10 11:54:36

标签: java collections

我将如何使用集合对象打印所有Animals

Collection<Animal> c = animals.values();

从技术上讲,我已经使用entrySet进行了此操作,但这是一种更高级的方法,这不是我需要做的。

如何使用不带for each loop的简单entrySets集合对象打印所有动物?

对此将提供任何帮助或建议,谢谢! :)

动物园课:

public class MyZoo
{
   private String zooId;
   private int nextAnimalIdNumber;
   private TreeMap<String, Animal> animals;
   private Animal animal;

   public MyZoo(String zooId)
   {
      this.zooId = zooId.trim().substring(0,3).toUpperCase();
      nextAnimalIdNumber = 0;
      animals = new TreeMap<String, Animal>();
   }

   public void addAnimal(Animal animal)
   {
      animals.put(animal.getName(), animal);
      this.animal = animal;
   }

   public void printAllAnimals()
   {
     Collection<Animal> c = animals.values();
   }
}

动物类:

public class Animal
{
   private String id;
   private String species;
   private String name;

   public Animal(String species, String name, MyZoo owner)
   {
      id = owner.allocateId();
      this.species = species;
      this.name  = name;
   }

   public String getId()
   {
      return id;
   }

   public String getName()
   {
      return name;
   }

   public String getSpecies()
   {
      return species;
   }

   public String toString()
   {
      return id + "  " + name + ": a " + species;
   }
}

2 个答案:

答案 0 :(得分:1)

您可以使用for循环:

for (Animal a: animals) {
    System.out.println(a);
}

我希望更简洁:使用lambda。

animals.stream().forEach(System.out::println);

答案 1 :(得分:0)

  1. 使用Streams

    public void printAllAnimals(){
        animals.values().stream().forEach(System.out::println); 
    }
    
  2. 使用经典for each loop

    public void printAllAnimals(){
        for (Animal ani: animals.values()) {
            System.out.println(ani);
        }
    }