2016-08-04 42 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就是一個很好的例子。