创建一个组合来自两个对象的字段的数组列表



我是Java的新手,正在使用BlueJ。

程序上下文概述。

我正在尝试创建一个俱乐部数据库(arraylist,而不是实际数据库),用户可以在其中添加新的登山者(姓名,年龄,性别)以及他们爬过的山(姓名,高度)到arraylist。

我创建了登山者类和山地类。我还为登山者创建了一个 ArrayList,可以添加到这个数组中。我的问题是..如何将登山者添加到登山者 ArrayList 中,并能够同时添加他们攀登过的山峰及其高度?

添加登山者的方法需要同时访问登山者和山地类?我需要将山地类的字段传递到攀登者吗?

虽然代码解决问题是值得赞赏的,但如果向我展示正确的方向,以便我可以更好地理解它,那将是有帮助的!

谢谢。

 import java.util.ArrayList;
import java.util.Scanner;
/**
 * Write a description of class ClubStats here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class ClubStats
{
    // An ArrayList for storing climber details.
    private ArrayList<Climber> climbers;
    /**
    * Constructor for objects of class ClubStats
    */
    public ClubStats()
   {
       // Initialise instance variables.
       climbers = new ArrayList<Climber>();
    }
    public void addClimber(Climber newName)
    {
        climbers.add(newName);
    }
   public Climber getClimber(String name)
   {
       Climber foundClimber = null;
       int index = 0;
       boolean searching = true;
       while(searching && index < climbers.size()) {
           Climber climber = climbers.get(index);
           if(climber.getName().equals(name)) {
                   searching = false;
                   foundClimber = climber;
                }
                else {
                    System.out.println(name + " not found");
                    index++;
                }
            }
            return foundClimber;
        }
    public void displayList()
    {
        for (int item = 0; item<climbers.size();
        item++) {
            Climber climber = climbers.get(item);
            System.out.println(climber.getName() + (" ") + climber.getAge() + (" ") 
            + climber.getGender());
        }
    }
}

public class Climber
{
    // Instance variables.
    // The climber name.
    private String name;
    // The climber age
    private int age;
    // The climber gender.
    private String gender;

    /**
     * Constructor for objects of class Climber
     */
    public Climber (String newName, int newAge, String newGender)
    {
        // Initialise instance variables.
        name = newName;
        age = newAge;
        gender = newGender;
    }
    /**
     * Accessor method for climber's name.
     */
    public String getName()
    {
        return name;
    }
    /**
     * Set the climber's name.
     */
    public void setName(String newName)
    {
        name = newName;
    }
    /**
     * Accessor method for climber's age.
     */
    public int getAge()
    {
        return age;
    }
    /**
     * Set the climber's age.
     */
    public void setAge(int newAge)
    {
        age = newAge;
    }
     /**
     * Set the climer's gender.
     */
   public String getGender()
   {
       return gender;
   } 
   /**
     * Accessor method for climber's gender.
     */
    public void getGender(String newGender)
    {
        gender = newGender;
    }

}
public class Mountain
{
    // Instance variables.
    private double height;
    private String name;
    /**
     * Constructor for objects of class Mountain
     */
    public Mountain(String mName, double mHeight)
    {
        // Initialise instance variables
        name = mName;
        height = mHeight;
    }
    /**
     * Accessor method for mountain name.
     */
    public String getName()
    {
        return name;
    }
    /**
     * Set the mountain name.
     */
    public void setName(String newName)
    {
        name = newName;
    }
    /**
     * Accessor method for mountain height.
     */
    public double getHeight()
    {
        // put your code here
        return height;
    }
    /**
     * Set the mountain height.
     */
    public void setHeight(double newHeight)
    {
        height = newHeight;
    }
}

Climber可以包含此Climber攀登的Mountain a 的List<Mountain>

您可以将 addMountain(Mountain mountain) 方法添加到类Climber这将向该List添加Mountain

您可以添加一个 getter 方法List<Mountain> getMountainList()该方法将返回该List

这样,对于每个Climber,您都可以访问该Climber攀登的Mountain

请注意,如果多个Climber爬上了同一个Mountain,它们都可以在其List<Mountain>中包含对同一Mountain实例的引用(即不需要为每个Climber创建该Mountain实例的副本)。

最新更新