2016-12-13 4 views
0

Hey, ich bin neu in Java und habe Schwierigkeiten mit Arrays. Ich versuche entweder Arrays oder ArrayLists zu verwenden, um eine Liste von Werten aus meiner Testklasse zu speichern. Aber ich habe, wie ich Set1 und Set2 in meine ArrayList hinzufügen.Objekte in ein Array initialisierenListe aus Testklasse

Ich habe eine Testklasse mit

Data set1 = new Data(new double[]{1, 2, 3, 4, 5}); 
    System.out.println("Set1: " + set1); 

Data set2 = new Data(new double[]{-5, -4, -3, 1}); 
     System.out.println("Set2: " + set2); 

meine Datenklasse Dann

import java.util.ArrayList; 

    public class Data { 

    public Data(double[] sets) { 
     ArrayList<Double> sets = new ArrayList<Double>(); 
    } 

} 
+1

kann man auch nichts hinzufügen 'set1' und' set2', da sie von der Art sind 'Data' und Ihre' ArrayList' erfordert eine 'Double' wegen Generika. Wahrscheinlich wollen Sie einen Konstruktor 'Data (double [])', wo Sie das 'double' Array übergeben. Dort könnten Sie die Werte zur 'Liste' hinzufügen. – SomeJavaGuy

+0

Mögliches Duplikat von [Create ArrayList from array] (http://stackoverflow.com/questions/157944/create-arraylist-from-array) –

Antwort

0

Ihr Problem ist in Ihrer Data Klasse:

import java.util.ArrayList; 

public class Data { 

    public Data(double[] sets) { 
     ArrayList<Double> sets = new ArrayList<Double>(); 
    } 

} 

Die sets Variable verschwindet, nachdem der Konstruktor zurückgibt, so dass es keinen Sinn hat, sie dort zu deklarieren. Sie sollten die Erklärung der Klasse Ebene bewegen und einen korrekten Wert es im Konstruktor zuweisen:

ArrayList<Double> sets; 
public Data(double[] sets) { 
    this.sets = new ArrayList<Double>(); 
    for (double d : sets) { 
     this.sets.add(d); 
    } 
} 

Da Sie die Data drucken möchten, können Sie die toString Methode außer Kraft setzen müssen:

@Override 
public String toString() { 
    return sets.toString(); 
} 
0

Vielleicht für Sie arbeiten würde:

public Data(double[] array) { 
    sets = new ArrayList<Double>(Arrays.asList(array)); 
} 

public String toString() { 
    return sets.toString(); 
} 
+0

Wie würde ich set1 auf eine Variable in meinem toString auflösen? Atm wenn ich versuche auszugeben bekomme ich die Adresse von set1 und set2. – JavaNewbie42

+0

Ich habe es mit einer Beispielimplementierung bearbeitet. –

0

Zum einen Datenklasse erzeugen, wie:

class Data 
{ 
    ArrayList<Double> obj; 

    Data(Double var[]) 
    { 
     obj=new ArrayList<Double>(); 

     for(int i=0;i<var.length;i++) 
     { 
      obj.add(var[i]); 
     } 
    } 
} 

Nun erstellen Objekte dieser Datenklasse als:

Double val1[]={1.0,2.0,3.0,4.0}; 
Data set1=new Data(val1); 

Double val2[]={1.0,25.0,36.0,44.0}; 
Data set2=new Data(val2); 

nun diese Objekte von Datenklasse in Arraylist hinzufügen, wie:

ArrayList<Data> sets=new ArrayList<Data>(); 
sets.add(set1); 
sets.add(set2); 
0

hier ist der Code Java 8-Streams verwenden,

class Data { 

    List<Double> d; 

    public Data(Stream sets) { 
     this.d = (List<Double>) sets.collect(Collectors.toList()); 
    } 
} 

Data setss = new Data(Stream.of("1.1","2","3.4","4","5")); 
System.out.println("d list = "+setss.d); 
Verwandte Themen