ArrayList对象分隔数组转换

时间:2016-08-04 17:35:16

标签: java arraylist

我坚持这个问题我创建了一个类Person,其中只有两个属性名称和年龄。我将该人的详细信息作为用户输入并保存为ArrayList中的对象,但我想将用户从键盘输入的ArrayList个对象属性移动到单独的数组中,如同所有名称一样person将String数组和所有年龄的人从该ArrayList转换为int数组。有没有办法做到这一点?
代码:

public class Person {

    String name;
    int age;

}

public class Main {

    public static void main(String[] args) {


        Scanner s = new Scanner(System.in);
        ArrayList<Person> arr = new ArrayList<Person>();
        Person person = null;



        for(int i=0;i<2;i++){
            person = new Person();
            System.out.println("Enter Person "+(i+1)+" Record");
            int age = 0;
            System.out.print("Enter Name : ");
            String str = s.nextLine();
            person.name = str;
            System.out.print("Enter Age : ");
            age = s.nextInt();
            s.nextLine();
            person.age = age;
            arr.add(person);
            person = null;
            System.out.println("Record "+(i+1)+" Successful Fill");

        }
            String[] stringarray = new String[arr.size()];
            int[] intarray = new int[arr.size()];

    }

}

3 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。一种方法是为年龄和名称创建ArrayLists,并在每次提取新值时添加它们。

ArrayList<String> names = new ArrayList<>();
ArrayList<int> ages = new ArrayList<>();

for(int i = 0; i < 2; i++){
    // create person object
    names.add(str);
    ages.add(age);
}

如果他们绝对需要Arrays,那么你可以转换为:

String[] nameArray = names.toArray(new String[0]);
String[] ageArray = ages.toArray(new int[0]);

答案 1 :(得分:0)

我不知道任何花哨的方法可以做到这一点,但是无论什么时候需要它,一种方法是创建一个循环遍历所有Person对象并创建两个信息数组的方法。 / p>

因此...

int[] ages = new int[arr.size()];
String[] names = new String[arr.size()];
for(int i = 0; i < arr.size(); i++){
     //assign attributes
}

然后用这些数组做你想做的事......

同样,可能有更好的方法来做到这一点,但这将确定工作,虽然效率不高。

然而, 在for循环中,在将Person对象添加到数组的位置,您可以在开头将它们添加到声明的arraylist中。

然后,如果你真的需要它成为一个&#34; List&#34;而不是&#34; ArrayList&#34;, 你可以将arraylist转换成一个列表。 Here就是一个很好的例子。

答案 2 :(得分:0)

如果您希望使用person-objects保存arraylist并在读入所有值后填充数组,请创建一个新函数:

private void add2Arrays(List<Person> list) {
  for(int i = 0; i < list.size(); i++) {
    Person p = list.get(i);
    stringarray[i] = p.getName();
    intarray[i] = p.getAge();
  }
}