如何获取字符串数组并将其进一步分成对象?

时间:2018-12-11 12:03:24

标签: java arrays string object arraylist

我有一个字符串数组,用于标识宠物的名字,动物的类型,年龄及其所有者的名字(每个属性用逗号分隔):

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对象的循环?

5 个答案:

答案 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]);
}

我希望我的遮阳篷能帮上忙。