2012-09-21 13 views
6

मेरे पास इस तरह जावा में एक डबल ArrayList है।एक ही इंडेक्स पर ArrayList में एकाधिक मान जोड़ना

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

अब मुझे क्या करना चाहते हैं पाशन के माध्यम से सूचकांक में सूची के शून्य सूचकांक और 5 मूल्यों में 5 मान जोड़ने के लिए है।

zeroth सूचकांक मूल्यों {100,100,100,100,100} होता सूचकांक 1 मूल्यों {50,35,25,45,65}

और इन मूल्यों के सभी निम्न क्रम में एक डबल सरणी में जमा हो जाती है के लिए होता है

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

मैं यह कैसे कर सकते हैं?

+0

सबसे पहले, क्या आपका लक्ष्य बहु-स्तर सरणी बनाने का लक्ष्य है, या क्या यह ऐरेलिस्ट के उद्देश्य का उल्लंघन करना है? यदि पूर्व में, आपके पास 'ऐरेलिस्ट ' हो सकता है; यदि उत्तरार्द्ध, आपको पुनर्विचार करना चाहिए कि आप यहां एक सूची का उपयोग क्यों कर रहे हैं। – Vulcan

+0

मुझे सूची का उपयोग करने की आवश्यकता है क्योंकि मुझे इसे एक ग्राफ को चलाने के लिए एसीहार्टेनजीन में पास करने की आवश्यकता है। जिस तरह से आप मुझे यह भी बता सकते हैं कि सरणीसूची के साथ इसे कैसे करें :) –

उत्तर

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

जो आप करना चाहते हैं उन्हें जोड़ना है, है ना? आप कुछ इस तरह की कोशिश कर सकते हैं: (मुझे लगता है कि दोनों सरणी में एक ही आकार के होते हैं, अन्यथा आप बयान के लिए दो उपयोग करने की आवश्यकता)

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]; Arrays तेज़ होते हैं, जब आप अधिक कुशल नहीं होते हैं।

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

मैंने पूरा कोड लिखा है, ऐरेलिस्ट घोषणा मुख्य() में होगी जो एक अलग वर्ग में है .. –

+0

विधि 'कनेक्ट' का कोई रिटर्न प्रकार नहीं है। क्या यह संकलित करता है? अगर आपको कुछ भी वापस नहीं आता है तो आपको हस्ताक्षर में 'शून्य' जोड़ना चाहिए। इसके अलावा, सम्मेलन के अनुसार, जावा कक्षाएं पूंजी पत्र से शुरू होती हैं। –