2012-09-21 18 views
6

Ho un doppio ArrayList in java come questo.Aggiunta di più valori in ArrayList in un singolo indice

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

Ora quello che voglio fare è aggiungere 5 valori dell'indice di zero della lista e 5 valori di indice di uno a loop.

L'indice zeresimo avrebbe valori {100,100,100,100,100} L'indice 1 dovrebbe avere valori {50,35,25,45,65}

e tutti questi valori sono memorizzati in un doppio array nel seguente ordine a

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

Come posso farlo?

+0

Prima di tutto, il tuo obiettivo è creare un array multilivello o violare lo scopo di ArrayList? Se il primo, si potrebbe avere un 'ArrayList '; se quest'ultimo, dovresti riconsiderare il motivo per cui stai usando una lista qui. – Vulcan

+0

ho bisogno di usare l'elenco perché ho bisogno di passarlo a AChartENGINE per disegnare un grafo. Da come puoi anche dirmi come farlo con l'arraylist :) –

risposta

7

@Ahamed ha un punto, ma se si sta insistendo su utilizzando gli elenchi in modo da poter avere tre arraylist come questo:

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: Se si dispone di tali valori nella tua lista che al di sotto :

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

quello che vuoi fare è combinarli, giusto? Si può provare qualcosa di simile: (suppongo che sia di matrice sono gli stessi di dimensioni, in caso contrario è necessario utilizzare due per dichiarazione)

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

Il peoblem è che non ho questi valori di hardcode li ho in il mio doppio [] array. –

+1

Ho aggiornato la mia risposta, per favore dai un'occhiata a – yahya

+0

grazie per il tuo aiuto. Ho avuto modo di funzionare e la mia soluzione era quasi simile alla tua :) –

1

Utilizzare invece array bidimensionale. Ad esempio, gli array int values[][] = new int[2][5]; sono più veloci, quando non si sta manipolando molto.

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); 

si può avere come molti ArrayList all'interno del arrObjList. Spero che questo ti possa aiutare.

3

Come su

  1. Prima di aggiungere il risultato desiderato come ArrayList e
  2. e convertire in doppio array come si desidera.

Prova come questo ..

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

creare metodo semplice per farlo per voi:

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

Quindi è possibile creare

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

e inserirlo con questo metodo alla tua lista.

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

Bel esempio che hai dato –

0

È possibile passare un oggetto che si riferisce a tutti i valori in un determinato indice.

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; 
} 

} 

più tardi per ottenere un valore particolare a un indice specifico, si può fare questo:

a.get(0).p1; 

a.get(0).p2; 

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

e così via.

+0

Hai persino controllato che compili? –

+0

Non ho scritto il codice completo, la dichiarazione ArrayList sarà in main() che si trova in una classe separata. –

+0

Il metodo 'connect' non ha alcun tipo di ritorno. Compila? Dovresti aggiungere 'void' alla firma se non restituisce nulla. Inoltre, per convenzione, le lezioni di Java iniziano con una lettera maiuscola. –

Problemi correlati