我有一个字符串数组,用于标识宠物的名字,动物的类型,年龄及其所有者的名字(每个属性用逗号分隔):
String[] petInfo = ["Spot, dog, 2, Joey", "Kip, dog, 3, Jack", "Snuffles, cat, 1, Jane" , "Franklin, turtle, 4, Arthur",...]
我创建了一个宠物类,其成员字符串为petName,字符串类型,int年龄和字符串ownerName。
public class Pet
{
string petName;
string type;
int age;
string ownerName;
//getters
}
我主要声明
List<Pet> pets = new ArrayList<Pet>();
我想使用arraylist创建一个宠物对象数组。我知道我必须使用split来遍历原始数组,但是这给我留下了另一个逗号分隔的值数组,用于一只宠物。如何编写一个可以遍历petInfo数组并将这些值添加到列表中每个pet对象的循环?
答案 0 :(得分:2)
这就是您所需要的:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] petInfo = {"Spot, dog, 2, Joey", "Kip, dog, 3, Jack", "Snuffles, cat, 1, Jane" , "Franklin, turtle, 4, Arthur"};
List<Pet> pets = new ArrayList<Pet>();
for (String singlePetInfo : petInfo) {
pets.add(getPetFromString(singlePetInfo));
}
pets.forEach(System.out::println);
}
private static Pet getPetFromString(String petDescription){
String[] split = petDescription.split(", ");
return new Pet(split[0], split[1], Integer.parseInt(split[2]), split[3]);
}
}
答案 1 :(得分:1)
一个非常冗长的示例:此方法采用数组并将宠物零件转换为宠物。最后返回宠物列表。
"dependencies": {
"aframe": "^0.8.2",
"aframe-react": "^4.4.0",
"axios": "^0.18.0",
"bootstrap": "*",
"react": "^16.6.3",
"react-dom": "^16.6.3",
"react-scripts": "2.1.1"
}
答案 2 :(得分:1)
我写了一个解决方案。有两个关键点。分割字符串可能会导致错误的解决方案。这就是为什么,我添加了适当的正则表达式。另外,您需要注意整数转换。使用整数类使您更轻松。
String[] petInfo = {"Spot, dog, 2, Joey", "Kip, dog, 3, Jack", "Snuffles, cat, 1, Jane" , "Franklin, turtle, 4, Arthur"};
List<Pet> pets = new ArrayList<Pet>();
for (int i = 0; i < petInfo.length; i++) {
String[] pet = petInfo[i].split("\\s*,\\s*");
pets.add(new Pet(pet[0], pet[1], Integer.parseInt(pet[2]), pet[3]));
}
答案 3 :(得分:0)
您可以创建构造函数或辅助方法,以从给定的字符串创建Pet
对象。
以下是构造函数的代码段。参见here the complete working code:
Pet(String val)
{
String[] vals = val.trim().split(",");
petName = vals[0].trim();
type = vals[1].trim();
age = Integer.valueOf(vals[2].trim());
ownerName = vals[3].trim();
}
要使用它,您可以执行以下操作:
String[] petInfo = new String[]{"Spot, dog, 2, Joey",
"Kip, dog, 3, Jack", "Snuffles, cat, 1, Jane" , "Franklin, turtle, 4, Arthur"};
ArrayList<Pet> list = new ArrayList();
for(String p:petInfo)
{
list.add(new Pet(p));
}
答案 4 :(得分:0)
采用petInfo
数组,并进行for
循环。然后拆分字符串并创建一个新的Pet
对象,然后可以将其添加到名为List<Pet>
pets
中
List<Pet> pets = new ArrayList<Pet>();
//Renamed it to petInfos, for better usage in the for loop
String[] petInfos = ["Spot, dog, 2, Joey", "Kip, dog, 3, Jack", "Snuffles, cat, 1, Jane" ,
"Franklin, turtle, 4, Arthur",...]
for(String petInfo : petInfos){
String[] petInfoSplitted = petInfo.split(", ");
pets.add(new Pet(petInfoSplitted[0], petInfoSplitted[1],
Integer.parseInt(petInfoSplitted[2]), petInfoSplitted[3]);
}
我希望我的遮阳篷能帮上忙。