如何在Java中组合两个列表? 到目前为止的输出是:
Firstname1
Firstname2
Firstname3
Lastname1
Lastname2
Lastname3
[[Firstname1, Firstname2, Firstname3], [Lastname1, Lastname2, Lastname3]]
我希望输出为:
[Firstname1 Lastname1,Firstname2 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());
}
}
答案 0 :(得分: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);
答案 1 :(得分:3)
由于Java是面向对象的语言,我会使用带有两个字段firstName
和lastName
的Object。这样可以使两个列表更加简单。您可以向新类添加toString
方法,这将产生您想要的输出。
答案 2 :(得分: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);
}
那就是说,我同意Peter的回答:你应该使用一个Person
对象,它有两个属性:firstName
和lastName
。
附注:我重命名了你的变量,使代码更具可读性。
答案 3 :(得分:1)
ArrayList<String> peopleFullNames = new ArrayList<String>();
for(i = 0; i < peopleFName.length; i++){
peoplNames.add(peopleFName.get(i) + " " + peopleLName.get(i));
}
基本上,这将创建一个ArrayList(或者,你可以创建一个数组,因为你知道它的大小),然后逐个添加名称,并在这两个列表中组合字符串。
答案 4 :(得分:0)
如果你想组合Firstname1 - &gt; Lastname1; Firstname2 - &gt; Lastname2 ....
你应该做一个简单的:
String[] fullName = new String[peoplFname.size()];
for(int i = 0; i < peoplFname.size(); i++)
{
fullName[i] = peopleFname.get(i)+" "+peopleLname.get(i);
}
考虑到peopleFname和peopleLname具有相同数量的元素。 如果你想制作所有可能的名字组合,你应该在另一个组合内。因此,对于名字,所有姓氏都将被迭代,并且所有名字都会发生:
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());
}
}