2016-08-04 52 views
0

我被困在这个问题上,我做了一个类Person其中它只有两个属性名称和年龄。我将该人的详细信息作为用户输入并保存为ArrayList中的对象,但我想将该用户从键盘输入的对象属性移动到单独的数组中,如将所有姓名人物排入String数组以及所有年龄段的人该数组列表中的int数组。有没有办法做到这一点?
代码:ArrayList对象来分开数组转换

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()]; 

    } 

} 
+0

是的,有一种方法。 – csmckelvey

+0

它是什么逻辑? – hamel123

回答

0

如果你想保持与人对象的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(); 
    } 
} 
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]); 
0

我不知道有什么奇怪的方法可以做到这一点,但只要您需要,就可以制作一种方法来遍历所有Person对象并创建两个信息数组。

所以......

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

然后做任何你想要与这些阵列...

再次,有可能是一个更好的方式来做到这一点,但是这将definitel工作,尽管它效率不高。


然而, 在你的for循环,就在您添加用户对象的数组,你可以将它们添加到在开头声明数组列表。

然后,如果您确实需要将其作为“列表”而不是“ArrayList”,则可以将数组列表转换为列表。 Here就是一个很好的例子。