2016-06-08 7 views
1

Ich bin von C++ Hintergrund und in C++ können wir Zeiger verwenden und speichern eine Sammlung von mehreren Datentypen in einem Vektor, aber wie machen wir das in Java. Zum Beispiel möchte ich speichern: {Name, Preis/Pfund, Gewicht} {Name, Preis} Es ist eine Art von Bäckerei-Empfangsprogramm.Wie speichert man eine Sammlung von mehreren Datentypen in einem Vektor in Java?

+0

BakeryItem scheint nur eine Klasse zu sein ... Sie machen also ein Objekt, das der Vektor (vorzugsweise ein Arraylist) speichern würde –

+0

Dies ist zu allgemein, um eine sinnvolle Antwort zu geben. Sollten wir sehen, wie Ihre Klassen aussehen, was Sie vorhaben und wo Sie stecken bleiben? – shmosel

+0

@smossel Dies ist nicht zu allgemein für einen C++ - Programmierer. Wir sind es gewöhnt, alle Arten von Dingen an verschiedenen Orten anzubringen, von denen einige nicht völlig angemessen sind. Zeiger können schöne und nützliche Dinge sein. –

Antwort

2

Java ist eine sehr objektorientierte Sprache, die stark auf Klassen und Objekte ausgerichtet ist. Vielleicht finden Sie es einfacher für ein Receipt eine Klasse zu haben, und speichern Sie dann nur eine Array Quittung

Sie können oder wollen nicht eine Liste von Products in der Receipt Klasse aber haben. Auf diese Weise können Sie mehrere Artikel auf einem einzigen Beleg haben. Dies würde auch eine Product Klasse benötigen, und in der Receipt Klasse könnten Sie name, pricePerPound, weight in eine Liste von Produkten ändern, und Ihre Product Klasse würde stattdessen diese Variablen speichern. Jedes Produkt würde dann einen Namen, Preis pro Pfund und ein Gewicht

public class Receipt { 
    String name; 
    double pricePerPound; 
    double weight; 

    //Constructor 
    public Receipt() { 

    } 

    //Other methods can go here, like getters and setters 
} 

Dann können Sie einfach ein Array von Receipts

Receipt[] receipts = new Receipt[10]; 

Oder Sie können java.util.ArrayList verwenden, um einen Datentyp zu erhalten, die variiert in Größe

ArrayList<Receipt> receipts = new ArrayList<>(); //ArrayList of type Receipt 

Siehe ArrayList Dokumentation zu den Methoden, die Sie

verwenden können
1

Die korrekte Vorgehensweise in Java besteht darin, eine Schnittstelle zu erstellen, die die allgemeinen Attribute von Objekten darstellt, die in der Sammlung gespeichert werden sollen, und anschließend jede Klasse dieser Objekte diese Schnittstelle implementieren soll.

interface BakeryItem { 
    String getName(); 
    float getPrice(); 
} 

class WeightedItem { 
    private final float weight; 
    private final float pricePerPound; 

    public float getPrice() { 
     return weight * pricePerPound; 
    } 
} 

List<BakeryItem> bakeryItems; 

Wenn Sie bestimmte Attribute der verschiedenen Klassen verwenden müssen dann empfehle ich die visitor pattern mit der Logik von den Daten zu trennen.

Das Speichern verschiedener Klassen in einer Sammlung ist möglich mit List<Object> und Casting bei Abruf, aber dies ist keine empfohlene Vorgehensweise aus einer Vielzahl von Gründen.

Verwandte Themen