2012-01-16 5 views
0

Javaで2つのリストを結合するにはどうすればよいですか? 出力は、これまでのところです:私はあることを入れてほしいJavaで同じ量の要素を持つ2つのリストを結合するにはどうすればよいですか?

Firstname1 
Firstname2 
Firstname3 
Lastname1 
Lastname2 
Lastname3 
[[Firstname1, Firstname2, Firstname3], [Lastname1, Lastname2, Lastname3]] 

[FIRSTNAME2さんLastname1、FIRSTNAME1さんLastname2、Firstname3 Lastname3}

import java.util.Arrays; 
import java.util.List; 
import java.util.Iterator; 
import java.util.HashSet; 

public class Main { 

public static void main(String[] args) { 
    List<String> peoplFname = Arrays.asList("Firstname1", "Firstname2", "Firstname3"); 
    List<String> peoplLname = Arrays.asList("Lastname1", "Lastname2", "Lastname3"); 
    Iterator<String> iterator = peoplFname.iterator(); 
    while(iterator.hasNext()) { 
     System.out.println(iterator.next()); 
    } 

    Iterator<String> iteratorx = peoplLname.iterator(); 
    while(iteratorx.hasNext()) { 
     System.out.println(iteratorx.next()); 
    } 

    HashSet peopleFullName = new HashSet(); 

    peopleFullName.add(peoplFname); 
    peopleFullName.add(peoplLname); 

    System.out.println(peopleFullName.toString()); 
} 
} 
+1

「結合」を定義します。重複する項目がない「リスト」が必要ですか?あなたは 'Set'を使うことはできませんか? – Viruzzo

+0

私は出力が私が得ようとしているもので質問を更新しました。申し訳ありません、私はまだその言語の初心者です。 – Aaron

答えて

7

利用addAllの代わりaddを、中リストからすべての要素をセットに追加する。

peopleFullName.addAll(peoplFname); 
peopleFullName.addAll(peoplLname); 

更新:

はにあなたのコードを変更

更新質問に基づいて

あなたは両方のリストから対応する要素を組み合わせたいのように、それが見えます。あなたは正しい道を歩いています。あなたは、両方のリストを反復処理し、最後の名前を持つ最初の名前に参加して、結果リストに追加する必要があります。

List<String> peoplFname = Arrays.asList("Firstname1", "Firstname2", "Firstname3"); 
List<String> peoplLname = Arrays.asList("Lastname1", "Lastname2", "Lastname3"); 

Iterator<String> iterator = peoplFname.iterator(); 
Iterator<String> iteratorx = peoplLname.iterator(); 

List<String> peopleFullName = new ArrayList<String>(); 

while(iterator.hasNext() && iteratorx.hasNext()) { 
    String fullName = iterator.next() + " " + iteratorx.next(); 
    peopleFullName.add(fullName); 
} 

System.out.println(peopleFullName); 
+0

彼はセットをスキップすることもできます(ユニティシティを保証したくない場合を除く)。 – Viruzzo

3

Javaは、私は二つのフィールドfirstNamelastNameでオブジェクトを使用することになり、オブジェクト指向言語であるので、 。これにより、2つのリストをもっと簡単に追加することができます。 toStringメソッドを新しいクラスに追加すると、必要な出力が得られます。

2

私が正しく理解していれば、何が欲しいのは両方のリストから要素を連結することである。

List<String> fullNames = new ArrayList<String>(firstNames.size()); 
for (int i = 0; i < firstNames.size(); i++) { 
    fullNames.add(firstNames.get(i) + " " + lastNames.get(i)); 
} 

あるいは、(リストは配列に裏打ちされていない長いリストであれば重要であろう)イテレータを使用しました:言っ

List<String> fullNames = new ArrayList<String>(firstNames.size()); 
Iterator<String> lastNameIterator = lastNames.iterator(); 
for (Iterator firstNameIterator = firstNames.iterator(); firstNameIterator.hasNext();) { 
    String firstName = firstNameIterator.next(); 
    String lastName = lastNameIterator.next(); 
    fullNames.add(firstName + " " + lastName); 
} 

は、私はピーターの答えに同意:firstNamelastName:次の2つのプロパティを持つPersonオブジェクトを使用する必要があります。

サイドノート:コードをもっと読みやすくするために変数の名前を変更しました。

1
ArrayList<String> peopleFullNames = new ArrayList<String>(); 

for(i = 0; i < peopleFName.length; i++){ 
    peoplNames.add(peopleFName.get(i) + " " + peopleLName.get(i)); 
} 

基本的に、これは、ArrayListのを作成します(あるいは、あなたはあなたのサイズを知っているので、配列を作成することができます)し、それをひとつずつ名前を追加し、あなたがそれを行うと、両方のリストから文字列をコーミング。

0

Firstname1 - > Lastname1を結合する場合は、 FIRSTNAME1さん - > Lastname2 ....

あなたはのための簡単な作業を行う必要があります。peopleFnameとpeopleLnameは同じ数の要素を持っていることを考慮すると

String[] fullName = new String[peoplFname.size()]; 
for(int i = 0; i < peoplFname.size(); i++) 
{ 
    fullName[i] = peopleFname.get(i)+" "+peopleLname.get(i); 
} 

。 可能なすべての名前の組み合わせを作成する場合は、もう一方の名前の組み合わせを入れてください。したがって、最初の名前についてはすべての姓が繰り返され、すべての名前が繰り返されます。

ArrayList<String> allCombinations = new ArrayList<String>(); 

Iterator<String> iterator = peoplFname.iterator(); 
while(iterator.hasNext()) {   
    Iterator<String> iteratorx = peoplLname.iterator(); 
    while(iteratorx.hasNext()) { 
     allCombinations.add(iterator.next()+" "+iteratorx.next()); 
    } 
} 
関連する問題