2012-09-21 11 views
6

Ich habe eine doppelte ArrayList in Java wie folgt.Hinzufügen mehrerer Werte in ArrayList bei einem einzigen Index

List<double[]> values = new ArrayList<double[]>(2); 

Nun, was ich tun möchte, ist 5 Werte in Null-Index der Liste und 5 Werte in Index eine durch Looping hinzuzufügen.

würden Die nullteen Indexwerte haben {100,100,100,100,100} Der Index 1 Wert {50,35,25,45,65}

und alle diese Werte in einem Doppel Array gespeichert sind, haben würde in folgenden Reihenfolge

double[] values = {100,50,100,35,100,25,100,45,100,65} 

Wie kann ich es tun?

+0

Zunächst ist Ihr Ziel, ein Multi-Level-Array zu erstellen, oder ist es den Zweck von ArrayList zu verletzen? Wenn ersteres, könnte man eine 'ArrayList ' haben; Wenn Letzteres gilt, sollten Sie sich erneut überlegen, warum Sie hier eine Liste verwenden. – Vulcan

+0

Ich muss die Liste verwenden, weil ich es an AChartENGINE zum Zeichnen einer Grafik weitergeben muss.Mit der Art und Weise können Sie mir auch sagen, wie es mit Arraylist :) –

Antwort

7

@Ahamed hat einen Punkt, aber wenn Sie sich mit Listen sind beharren, so können Sie drei Arraylist wie dieses:

ArrayList<Integer> first = new ArrayList<Integer>(Arrays.AsList(100,100,100,100,100)); 
ArrayList<Integer> second = new ArrayList<Integer>(Arrays.AsList(50,35,25,45,65)); 
ArrayList<Integer> third = new ArrayList<Integer>(); 

for(int i = 0; i < first.size(); i++) { 
     third.add(first.get(i)); 
     third.add(second.get(i)); 
} 

Edit: Wenn Sie diese Werte auf Ihrer Liste haben, die unter :

List<double[]> values = new ArrayList<double[]>(2); 

was Sie tun möchten, ist es, sie zu kombinieren, richtig? Sie können so etwas wie dies versuchen: (Ich gehe davon aus, dass beide Arrays sind gleich großen, sonst müssen Sie zwei für Anweisung verwenden)

ArrayList<Double> yourArray = new ArrayList<Double>(); 
for(int i = 0; i < values.get(0).length; i++) { 
    yourArray.add(values.get(0)[i]); 
    yourArray.add(values.get(1)[i]); 
} 
+0

Das Peoblem ist ich habe nicht diese Hardcode-Werte, die ich habe sie in Mein Doppel [] Array. –

+1

Ich habe meine Antwort aktualisiert, bitte werfen Sie einen Blick auf – yahya

+0

Danke für Ihre Hilfe. Ich habe es zur Arbeit und meine Lösung war fast ähnlich wie Ihre :) –

1

Verwenden Sie stattdessen ein zweidimensionales Array. Zum Beispiel, int values[][] = new int[2][5]; Arrays sind schneller, wenn Sie nicht viel manipulieren.

3
ArrayList<ArrayList> arrObjList = new ArrayList<ArrayList>(); 
ArrayList<Double> arrObjInner1= new ArrayList<Double>(); 
arrObjInner1.add(100); 
arrObjInner1.add(100); 
arrObjInner1.add(100); 
arrObjInner1.add(100); 

arrObjList.add(arrObjInner1); 

Sie haben als in der arrObjList viele ArrayList können. Ich hoffe, dies wird dir helfen.

3

Wie wäre es

  1. Erster Ihre gewünschte Ergebnis als Arraylist und
  2. und Doppel Array konvertieren, wie Sie wollen.

wie die Sie interessieren ..

import java.util.ArrayList; 
import java.util.List; 

    public class ArrayTest { 

     /** 
     * @param args 
     */ 
     public static void main(String[] args) { 
      // TODO Auto-generated method stub 

      // Your Prepared data. 
      List<double[]> values = new ArrayList<double[]>(2); 

      double[] element1 = new double[] { 100, 100, 100, 100, 100 }; 
      double[] element2 = new double[] { 50, 35, 25, 45, 65 }; 

      values.add(element1); 
      values.add(element2); 

      // Add the result to arraylist. 
      List<Double> temp = new ArrayList<Double>(); 
      for(int j=0;j<values.size(); j++) { 
       for (int i = 0; i < values.get(0).length; i++) { 
        temp.add(values.get(0)[i]); 
        temp.add(values.get(1)[i]); 
       } 
      } 

      // Convert arraylist to int[]. 
      Double[] result = temp.toArray(new Double[temp.size()]); 
      double[] finalResult = new double[result.length]; // This hold final result. 
      for (int i = 0; i < result.length; i++) { 
       finalResult[i] = result[i].doubleValue(); 
      } 

      for (int i = 0; i < finalResult.length; i++) { 
       System.out.println(finalResult[i]); 
      } 
     } 
    } 
3

einfache Methode erstellen, die für Sie tun:

public void addMulti(String[] strings,List list){ 
    for (int i = 0; i < strings.length; i++) { 
     list.add(strings[i]); 
    } 
} 

Dann können Sie

String[] wrong ={"1","2","3","4","5","6"}; 

anlegen und es mit diesem Methode zu Ihrer Liste.

0
import java.util.*; 
public class HelloWorld{ 

public static void main(String []args){ 
    List<String> threadSafeList = new ArrayList<String>(); 
    threadSafeList.add("A"); 
    threadSafeList.add("D"); 
    threadSafeList.add("F"); 

Set<String> threadSafeList1 = new TreeSet<String>(); 
    threadSafeList1.add("B"); 
    threadSafeList1.add("C"); 
    threadSafeList1.add("E"); 
    threadSafeList1.addAll(threadSafeList); 


List mainList = new ArrayList(); 
mainList.addAll(Arrays.asList(threadSafeList1)); 
Iterator<String> mainList1 = mainList.iterator(); 
while(mainList1.hasNext()){ 
System.out.printf("total : %s %n", mainList1.next()); 
} 
} 
} 
+0

Schönes Beispiel, das Sie gegeben haben –

0

Sie können ein Objekt übergeben, das auf alle Werte eines bestimmten Index verweist.

import java.util.ArrayList; 

public class HelloWorld{ 

public static void main(String []args){ 


ArrayList<connect> a=new ArrayList<connect>(); 

a.add(new connect(100,100,100,100,100)); 

System.out.println(a.get(0).p1); 

System.out.println(a.get(0).p2); 

System.out.println(a.get(0).p3); 
} 

} 

class connect 
{ 
int p1,p2,p3,p4,p5; 

connect(int a,int b,int c,int d,int e) 
{ 

this.p1=a; 

this.p2=b; 

this.p3=c; 

this.p4=d; 

this.p5=e; 
} 

} 

später einen bestimmten Wert zu einem bestimmten Index zu erhalten, können Sie dies tun:

a.get(0).p1; 

a.get(0).p2; 

a.get(0).p3;............. 

und so weiter.

+0

Haben Sie sogar überprüft, dass es kompiliert? –

+0

Ich habe den vollständigen Code nicht geschrieben, die ArrayList-Deklaration wird in main() sein, das in einer separaten Klasse ist. –

+0

Die Methode 'connect' hat keinen Rückgabetyp. Kompiliert es? Sie sollten der Signatur "void" hinzufügen, wenn sie nichts zurückgibt. Außerdem beginnen Java-Klassen standardmäßig mit einem Großbuchstaben. –

Verwandte Themen