主要目标是创建充满20 Group
的{{1}}的两个示例(每个Person
必须具有Person
的唯一值来自name
数组的20个。我意识到,通过我的代码,我只能创建两个names
,因为所有值都将从名称中删除。
在我开始填充第二组之前,重新初始化列表one
的最佳方法是什么?
names
Group是一个对象,我创建了20个Person实例
public class Person {
static ArrayList<String> names = initArrayList();
private String name;
public Person() {
this.setName(getNameFromArrayList());
}
public Person(final String name) {
this.name = name;
}
private String getNameFromArrayList() {
Random random = new Random();
int indexOfName = random.nextInt(names.size());
return names.remove(indexOfName);
}
private static ArrayList<String> initArrayList() {
String[] names = {"Michael", "Daniel", "John", "Andrew", "Thomas",
"James", "Henry", "Peter", "Mario", "Erik",
"Sergio", "Emily", "Ruby", "Julia", "Isabella",
"Ashley", "Jessica", "Victoria", "Catherine",
"Elisabeth", "Sam", "Alex"};
return new ArrayList<String>(Arrays.asList(names));
}
public String getName() {
return name;
}
public void setName(final String aName) {
this.name = aName;
}
}
这是Main
public class Group {
ArrayList<Person> people = new ArrayList<>();
Group(){
for(int i = 0; i<20; i++){
people.add(new Person());
}
}
}
答案 0 :(得分:0)
shuffle()
该列表然后使用前20个:
Group() {
Collections.shuffle(names);
names.stream().limit(20).map(Person::new).forEach(people::add);
}