2014-04-17 11 views
5

Im mit dem folgenden CodeJava Listenelement

List<String> text = new ArrayList<String>(); 
text.add("Hello"); 

Damit Liste nur Strings akzeptiert hinzugefügt werden, wie kann ich hinzufügen, in eine Liste mehr Arten von Variablen wie ints und Streicher zusammen wie

Hinzufügen in die Textliste einige Rechteck Werte wie

Rechteck Name, Rechteck Breite, Rechteck Höhe

So später kann ich auf sie in einer Schleife zugreifen

+3

Warum möchten Sie das tun? Wäre es nicht besser, eine Klasse mit diesen Variablen als Felder zu schreiben? – Sionnach733

Antwort

11

Erstellen Sie Ihre eigene Rectangle Klasse und speichern Sie diese Werte drin.

List<Rectangle> rectangles = new ArrayList<>(); 
rectangles.add(new Rectangle("Foo", 20, 30)); 
+0

Besser, wenn er Rectangle in ArrayList speichert und dann nur den Namen des Rechtecks ​​speichert. – dharr

+0

Haben Sie es vor ein paar Sekunden bearbeitet? – dharr

+0

Ja, ich habe Ihren Beitrag kommentiert und gesagt, dass er den Namen von rec in ArrayList speichern soll, und das war ein bisschen komisch, weil Sie das ganze Objekt speichern können und genau das haben Sie kürzlich hinzugefügt :) – dharr

4

ein bisschen auf Duncan Antwort erweitern, ist hier, wie Sie eine Rechteck-Klasse erstellen können:

public class Rectangle { 
    private String name; 
    private int height; 
    private int width; 

    /** 
    * Create a rectangle by calling 
    * Rectangle myRect = new Rectangle("foo", 20, 10); 
    */ 
    public Rectangle(String name, int height, int width) { 
     this.name = name; 
     this.height = height; 
     this.width = width; 
    } 
} 

Sie müssten Accessormethoden, um es hinzuzufügen, so dass Sie den Namen abrufen kann, Breite und Höhe. Dies sind in der Regel öffentliche Methoden, die Dinge wie getName und getWidth heißen (Spitzname getters). Möglicherweise verfügen Sie auch über eine Funktion, die den Bereich zurückgibt. Hier ist ein Beispiel.

public String getName() { return name; } 
public int getHeight() { return height; } 
public int getWidth() { return width; } 

public String area() { 
    int area = height * width; 
    return "Rectangle " + name + " has an area " + area + "."; 
} 
+1

Yup. Und wenn man das wirklich wollte, könnte man auch ein ['java.awt.Rectangle'] (http://docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html) Objekt in dieses einbinden Klasse zum Einkapseln der Höhe und Breite (wenn die Funktionalität dieser Klasse gewünscht wurde). –

+1

Guter Punkt, Paul. Die Klasse würde auch einen Ursprung liefern, sollte das OP es jemals brauchen. – rajah9

2

können Sie einfach eine class erstellen, die die Variablen, die Sie benötigen, enthalten und diese Klasse als Datentyp in der list Erklärung verwenden.

zB:

class MyStructure{ 
    int anInteger; 
    double aDouble; 
    string aString; 
    //Followed by any other data types you need. 

    //You create a constructor to initialize those variables. 
    public MyStructure(int inInt, double inDouble, string inString){ 
    anInteger = inInt; 
    aDouble = inDouble; 
    aString = inString; 
    } 
} 

Dann, wenn Sie Ihre wichtigsten oder Ihre Methode haben, und deklarieren Sie eine Liste, die Sie einfach schreiben:

List<MyStructure> myList = new ArrayList<>(); 
myList.add(new MyStructure(5, 2.5, "Hello!")); 
0

Während die Antwort, eine Klasse zu erstellen, ist sicherlich ein bessere Möglichkeit, Ihr Programm zu organisieren, ist die Antwort auf Ihre Frage, eine Liste des Typs Objekt zu erstellen. Dann können Sie Ihrer Liste einen beliebigen Typ hinzufügen. Um zu bestimmen, mit welchem ​​Typ Sie zur Laufzeit arbeiten, können Sie das Schlüsselwort instanceof verwenden. Aber um ganz klar zu sein, das ist keine gute Übung.

List<Object> text = new ArrayList<String>(); 
text.add("Hello"); 
text.add(new Integer(10)); 
Verwandte Themen