2016-08-29 4 views
-1

Ich habe eine Liste einer Liste, die ich als Daten übergeben werde. Das Beispiel, das sie gaben, war das Objekt wird so aussehen:Wie kann ich einen bestimmten Wert in einer Arraylist finden?

List assetClassCorrelationMatrix = new ArrayList(); 
List m1 = new ArrayList(); 
m1.add(2); 
m1.add(4); 
m1.add(0.8979); 
assetClassCorrelationMatrix.add(m1); 

EDIT: OK, so tut mir leid, ich war nicht klar. Ich dachte, dass dies sie mich sein würde in der Struktur der

correlation[2][4] = 0.8979 

Stattdessen geben:

correlation[0] = 2; 
correlation[1] = 4; 
correlation[2] = 0.8979; 

Ich muss nur wieder, was in correlation[2] ist, wenn ich nur die Werte was ist in correlation[0] und correlation[1]

Hilfe?

+0

Was meinen Sie eigentlich mit "durch die Arraylist mit den ersten beiden Werten zu iterieren"? – hahn

+0

Was meinst du mit der 'ArrayList' ** iterieren mit den ersten beiden Werten, um die 3. ** zu bekommen? Die ersten beiden Werte haben nichts mit dem 3. Wert in der Liste zu tun. Das Iterieren der Liste sollte sich nicht von den ersten beiden unterscheiden und Sie können es mit dem Index '2' erhalten. Ich denke, du musst vielleicht klären, was genau du willst. – Thor84no

Antwort

3

Sie benötigen keine anderen Werte, um einen bestimmten Wert in verschachtelter Arraylist zu finden. Wenn Sie für einen bestimmten Wert in Arraylist assetClassCorrelationMatrix suchen, können Sie auf diese Weise tun:

double num = 0.8979;   
for (Object object: assetClassCorrelationMatrix) {    
    List list = (List) object;          
    if(list.contains(num)) 
     System.out.println("The number " + num + " is found at index = " + list.indexOf(num)); 
} 

Edit: Nachdem Sie editierte Frage, es radikale Änderung des Kontextes scheint. Jetzt haben Sie zwei Werte (wie Indexwert 2 und 4 im 2D-Array) und möchten den Wert des Indexes erhalten. Sie können dies leicht mit 2D-Array tun. Aber wenn Sie mit der Liste bleiben möchten, können Sie diesen Weg gehen:

List assetClassCorrelationMatrix = new ArrayList(); 

    int a=2, b=4; 

    List m1 = new ArrayList(); 
    List m2 = new ArrayList();   

    // inserting values 
    m2.add(0, 1.1); 
    m2.add(1, 2.0); 
    m2.add(2, 0.5); 
    m2.add(3, 0.8979); 

    assetClassCorrelationMatrix.add(m1); 
    assetClassCorrelationMatrix.add(m2); 

    List list = (List) assetClassCorrelationMatrix.get(a-1); 
    Number number = (Number) list.get(b-1); 
    System.out.println("List = " + a + " and index = " + b + " and the number = " + number); 
+0

Es ist nicht so, dass ich 0,8979 "finden" will, ich muss es finden können, wo die anderen zwei Werte 2 und 4 sind. –

+0

'" Ich muss den 0,8979 Wert von der Arraylist zurückbekommen. Ich habe bereits die Werte 2 und 4. "' und '" Ich muss in der Lage sein, es zu finden, wo die anderen zwei Werte 2 und 4 sind. "" ..... was ist wahr? – Shahid

+0

Tut mir leid, ich erkläre es nicht besser, neu bearbeitet –

1

Beginnen Sie mit richtig die Art Ihrer Listen spezifizieren, sollte es so etwas wie dieses:

List<List<Number>> assetClassCorrelationMatrix = new ArrayList<>(); 
List<Number> m1 = new ArrayList<>(); 

Dann können Sie zugreifen auf Ihren Wert 0.8979List#get(int) verwendet wird, wie folgt aus:

Number n = m1.get(2); // The indexes start from 0, so the index of the 3th element is 2 

Wenn Sie es von assetClassCorrelationMatrix zugreifen wollen, wäre es:

Number n = assetClassCorrelationMatrix.get(0).get(2); 

Sie können diesen Wert unter den anderen identifizieren, indem sie die Art Prüfung, in der Tat 2 und 4 wird automatisch als Integer aufgrund Auto-Boxen und 0.8979 als Double umgewandelt werden.

for (Number n : m1) { 
    if (n instanceof Double) { 
     // Here is the code that treats the Double value 
    } 
} 
Verwandte Themen