2012-09-21 21 views
6

在java中我有一個雙重ArrayList這樣。在單個索引的ArrayList中添加多個值

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

現在我想做的是在零索引列表和5個值在指數經過一個循環加5倍的值。

的零指數將有值{100,100,100,100,100} 該指數1將值{50,35,25,45,65}

,所有這些值都存儲在一個雙陣列按照以下順序

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

我該怎麼辦呢?

+0

首先,你的目標是創建一個多層次的數組,或者是否違反了ArrayList的目的?如果前者,你可以有一個'ArrayList ';如果後者,你應該重新考慮你在這裏使用列表的原因。 – Vulcan

+0

我需要使用列表,因爲我需要將它傳遞給AChartENGINE繪製圖形。順便說一句,你也可以告訴我如何用arraylist :) –

回答

7

@Ahamed有一點,但如果你使用列表堅持這樣你就可以有三個ArrayList的是這樣的:

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

編輯: 如果你有你的名單上的那些價值觀,下面:

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

你想要做的就是把它們結合起來吧?你可以嘗試這樣的事情: (我假定這兩個數組是相同大小的,否則,你需要使用兩個for語句)

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

該peoblem是我沒有這些硬編碼值我有他們我的雙打[]陣列。 –

+1

我已經更新了我的答案,請幫我看看 – yahya

+0

thanx。我得到它的工作和我的解決方案几乎類似於你的:) –

1

改爲使用二維數組。例如,int values[][] = new int[2][5];陣列速度更快,當你操控不多時​​。

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

你可以有很多ArrayListarrObjList內。我希望這能幫到您。

3

如何

  1. 首先將你想要的結果作爲ArrayList和
  2. 並根據需要轉換爲雙陣列。

嘗試這樣的..

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

創建簡單的方法來爲你做的:

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

然後您可以創建

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

以及與此添加它方法列表。

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

你給出的很好的例子 –

0

您可以傳遞引用特定索引處所有值的對象。

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

} 

後來獲得在指定索引一個特定的值,你可以這樣做:

a.get(0).p1; 

a.get(0).p2; 

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

等。

+0

你甚至檢查過它編譯嗎? –

+0

我還沒有寫完整的代碼,ArrayList聲明將在main()中,它是在一個單獨的類中。 –

+0

連接方法沒有返回類型。它是否編譯?如果它沒有返回任何東西,你應該向簽名添加'void'。此外,按照慣例,Java類以大寫字母開頭。 –

相關問題