2012-09-21 18 views
6

Tengo un doble ArrayList en java como este.Agregando múltiples valores en ArrayList en un solo índice

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

Ahora lo que quiero hacer es añadir 5 valores en el índice cero de la lista y 5 valores en el índice de uno a través de un bucle.

El índice cero tendría valores {100,100,100,100,100} El índice 1 tendría valores {50,35,25,45,65}

y todos estos valores se almacenan en una matriz doble en el siguiente orden

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

¿Cómo puedo hacerlo?

+0

En primer lugar, ¿su objetivo es crear una matriz de niveles múltiples o violar el objetivo de ArrayList? Si el primero, puede tener un 'ArrayList '; si es lo último, debería reconsiderar por qué está usando una Lista aquí. – Vulcan

+0

necesito usar la lista porque necesito pasarla a AChartENGINE PARA DIBUJAR UN GRÁFICO. Por la forma en que también puedes decirme cómo hacerlo con la lista de arrays :) –

Respuesta

7

@Ahamed tiene un punto, pero si usted está insistiendo en el uso de listas de lo que puede tener tres ArrayList como esto:

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

Editar: Si tiene esos valores en su lista que a continuación :

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

lo que quieres hacer es combinarlos, ¿no? Usted puede intentar algo como esto: (supongo que tanto en la matriz son del mismo tamaño, de lo contrario es necesario utilizar dos para la declaración)

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

La gente no tiene estos valores de código duro en los que los tengo. mi matriz de dobles []. –

+1

He actualizado mi respuesta, eche un vistazo a – yahya

+0

gracias por su ayuda. Lo hice funcionar y mi solución fue casi similar a la tuya :) –

1

Utilice una matriz bidimensional en su lugar. Por ejemplo, int values[][] = new int[2][5]; Las matrices son más rápidas, cuando no se está manipulando mucho.

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

Usted puede tener tantas ArrayList dentro del arrObjList. Espero que esto ayude.

3

¿Qué tal

  1. Primera añadiendo el resultado deseado como ArrayList y
  2. y convertir a doble hilera como se desee.

Trate como esto ..

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

crear método simple para hacer eso por usted:

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

continuación, puede crear

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

y agregarlo con este método a su 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

Buen ejemplo que ha dado –

0

Puede pasar un objeto que se refiere a todos los valores en un índice en particular.

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

} 

más tarde para conseguir un valor particular en un índice específico, usted puede hacer esto:

a.get(0).p1; 

a.get(0).p2; 

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

y así sucesivamente.

+0

¿Incluso comprobó que se compila? –

+0

no he escrito el código completo, la declaración de ArrayList estará en main() que está en una clase separada. –

+0

El método 'connect' no tiene ningún tipo de devolución. ¿Compila? Debería agregar 'void' a la firma si no devuelve nada. Además, por convención, las clases de Java comienzan con una letra mayúscula. –

Cuestiones relacionadas