2017-10-21 54 views
0

Je fais l'application de location de voiture à Java.Quelle structure de données devrais-je utiliser en Java?

  1. J'ai la classe Car avec des chaînes RegNo, producer, model et booléen isCarRented.
  2. Liste des voitures je garde dans:

    Collection<Car> carList = new HashSet<Car>();

Tout fonctionne très bien.

Maintenant, ce que je dois faire est le module historique/statistique pour toute entreprise de location:

  • histoire

    de toutes les locations de voiture

  • histoire de location pour chaque voiture séparément

Mon idée est de:

  1. Créer une classe CarHistory avec:

    private static List<String> rentalDates = new ArrayList<String>();

  2. y garder les dates que je vais ajouter à chaque fois que la voiture est loué.

  3. Création d'une structure de données de se rappeler chaque histoire comme la location de voiture ceci:

    static Map<Car, CarHistory> rentalList = new HashMap<Car, CarHistory>();

Est-ce une bonne façon? J'ai des problèmes avec le constructeur pour CarHistory unique dans cette solution. Pas vraiment sûr de ce qu'il devrait revenir. Dois-je le créer après la première location? Et devrait créer vide ListrentalDates pour chaque voiture pour créer HashMap?

+1

Vous semblez vraiment statique, n'est-ce pas? Cela n'a aucun sens de l'utiliser pour vos dates de location. Lisez https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html. Pourquoi la voiture ne conserve-t-elle pas sa propre histoire (de la même manière qu'elle garde déjà son propre drapeau isCarRented)? Pourquoi utiliser une chaîne pour stocker une date? –

+0

Merci beaucoup pour votre aide. Changé bien sûr String to Date Array, vous devez toujours réfléchir un peu plus sur l'utilisation excessive de statique. Maintenant, chaque instance de Car a sa propre histoire. –

Répondre

2

Ce que vous essayez de faire est de mettre en œuvre un-à-un, parce qu'un Car n'a qu'un seul CarHistory et un CarHistory ne concerne que l'un Car. C'est pourquoi, la façon correcte de le faire serait d'ajouter le champ CarHistory carHistory à la classe Car.

Au début, la liste des CarHistory serait vide. Avec chaque réservation, vous ajouteriez simplement un enregistrement à la liste. L'histoire de la voiture serait facilement accessible, et le modèle correspondrait à la réalité de la manière la plus précise.

+0

Merci.Je sentais que je complaisais trop :) Avec votre solution, il semble plus raisonnablement. –