java使用字符串列表动态创建对象?
我试图通过使用将填充其字段的Strings
列表来创建objects
。例如,我有一个字符串列表,请注意,值在每3个之后重复一次。i、 e.id, name , address
List<String> myList = "Id1", "name1", "address1", "Id2", "name2", "address2";
我想使用此列表动态创建大量Person对象(如下所示)
Person object:
public class Person {
private String id;
private String name;
private String address;
public Person() {
}
public Person(String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
//standard getters and setters
}
我想做的是有一个方法,它将字符串列表作为输入,然后动态创建对象。我怎样才能做到最好
我知道,如果我知道我确实填充了2个对象,我可以做下面的事情,但问题是可能会有更多或更少
public List<Person> createObjectsFromStringList(List<String> list){
List<person> personList = new Arraylist<>();
Person person1 = new Person(list.get(0), list.get(1), list.get(2));
Person person2 = new Person(list.get(3), list.get(4), list.get(5));
personList.add(person1);
personList.add(person2);
return personList;
}
# 1 楼答案
当您希望按顺序访问元素时,应该在这样的循环中使用
java.util.LinkedList
但是
ArrayList
及其get
方法适合通过索引进行随机访问,而您的情况并非如此# 2 楼答案
如果您使用java 8,可以尝试以下方法:
# 3 楼答案
可以使用递归
请注意,重组您的列表会让我感觉更好。这样做:
或者甚至使用不同的列表(这样更好)。如果如上所述更改列表结构,则将代码更改为:
# 4 楼答案
一个简单的
for
循环可以完成以下工作:乍一看,我觉得在一个
List
上有不同的字段值是代码结构糟糕的标志,但可能您已经被这个List
卡住了编辑:
现在让我们假设您想要一个基于剩余元素数量的部分
Person
。假设它们的顺序仍然相同,可以修改此方法以检查每个字段当前索引的有效性:我们在这里使用三元操作
? ... : null
,因此如果元素用完,我们将关联的Person
字段设置为null
,而不是使用越界索引