2016-07-11 11 views
1

Ich habe einen Satz zwei des Vektors und ich muss den zweiten Satz in jedes des ersten Satzelements einfügen und drucken.Wie man Vektorelement innerhalb des Vektors in Java einfügt

meine Eingabe ist wie: {RED,BLUE,GREEN},{CSK,MI,RCB}

meine Ausgabe ist wie: {RED,CSK},{RED,MI},{RED,RCB},{BLUE,CSK},{BLUE,MI},{BLUE,RCB},{Green,CSK},{Green,MI},{Green,CSK}

ich meinen Code wie folgt versucht. Können Sie bitte schlagen Sie die Art und Weise

public static void main(String[]args){ 
Vector v = new Vector(); 
v.addElement("RED"); 
v.addElement("BLUE"); 
v.addElement("GREEN""); 
Vector v2 = new Vector(); 
Vector v3 = new Vector(); 
v2.addElement("CSK"); 
v2.addElement("RCB"); 
v2.addElement("MI"); 
for(int i=0; i<v.size(); i++){ 
    for(int j=0; j<v2.length; j++){ 
    v3 = v(i).add(v2(j)); 
    } 
} 
for(int i=0; i<v3.size(); i++){ 
    System.out.println(v3); 
} 
} 
+2

nur eine Randnotiz, aber es wird empfohlen, 'ArrayList' über' VECTOR' zu verwenden, wenn Sie eine Thread-sichere Implementierung benötigen. – Thomas

+2

Dieser Code wird nicht kompiliert. Java verwendet nicht 'var' –

+0

Das ist Vektor. Ich korrigiere das. Vielen Dank! –

Antwort

2

Ihre erwartete Ausgabe kann in unten Weg erreicht werden.

public static void main(String[]args){ 
     Vector v = new Vector(); 
     v.addElement("RED"); 
     v.addElement("BLUE"); 
     v.addElement("GREEN"); 
     Vector v2 = new Vector(); 
     Vector v3 = null; 
     v2.addElement("CSK"); 
     v2.addElement("RCB"); 
     v2.addElement("MI"); 
     for(int i=0; i<v.size(); i++){ 
      for(int j=0; j<v2.size(); j++){ 
       v3 = new Vector(); 
       v3.add(v.get(i)); 
       v3.add(v2.get(j)); 
       System.out.println(v3); 
      } 
     } 
//  for(int i=0; i<v3.size(); i++){ 
//   System.out.println(v3); 
//  } 

von oben

  1. v3 = v (i) .Add (V2 (j)); Diese Zeile wird nicht
  2. keine Länge in Vektor kompiliert nur Größe
  3. , um das Element zu erhalten hat zu bekommen zu verwenden (Index) Methode
  4. vermeiden Vektor mit besser gehen mit Arraylist
+0

Danke Praba. Es funktioniert –

3

Diese so genannte kartesisches Produkt und funktioniert wie folgt:

List<String> rgbs = Arrays.asList("RED", "GREEN", "BLUE"); 
List<String> modes = Arrays.asList("CSK", "MI", "RCB"); 
List<List<String>> cartesianProduct = new ArrayList<>(); 
for (String rgb : rgbs) { 
    for (String mode : modes) { 
     List<String> product = new ArrayList<>(); 
     product.add(rgb); 
     product.add(mode); 
     cartesianProduct.add(product); 
    } 
} 

ich ein wenig neue Syntax und Klassen wahrscheinlich noch unbekannt zu Ihnen, aber ganz ähnlich wie Ihre Kabeljau verwendet haben e.

Der wichtige Punkt ist, dass jedes Element des Ergebnisses selbst eine Kombination aus zwei Strings ist. Hier habe ich eine Liste benutzt. Auch

+0

Danke @Joop Ich wählte falsch DS –

+0

Man muss irgendwo beginnen, und Vektor ist da, ein ehrwürdiger Großvater, immer noch 'vector' in C++. List/ArrayList ist neuer. "List" ist eine Schnittstelle, eine abstrakte API und eine "ArrayList" und eine implementierende Klasse, die ein Array verwenden. Man kann also eine andere Implementierung wie 'LinkedList' wählen, die hier besser für' product' wäre: benötigt weniger Speicher. –

3

gut habe ich eine Lösung ..

public static void main(String[] args) { 
      Vector<String> v = new Vector<>(); 
      v.addElement("RED"); 
      v.addElement("BLUE"); 
      v.addElement("GREEN"); 
      Vector<String> v2 = new Vector<>(); 
      Vector<String> v3; 
      Vector<Vector<String>> v4 = new Vector<>(); 
      v2.addElement("CSK"); 
      v2.addElement("RCB"); 
      v2.addElement("MI"); 
      for (String vector_v : v) { 
       for (String vector_v2 : v2) { 
        v3 = new Vector<>(); // this declares new vector every time and this new vector is 
             // added to v4 and thus the list goes 
        v3.add(vector_v2); 
        v3.add(vector_v); 
        v4.add(v3); 
       } 
      } 
      System.out.println(v4); 
     } 
+0

Danke Asterisk, es funktioniert einwandfrei. –