簡體   English   中英

ArrayList對象以分離Array轉換

[英]ArrayList object to separate Array conversion

我陷入這個問題,我做了一個類Person ,其中只有兩個屬性name和age。 我將那個人的詳細信息作為用戶輸入並保存為ArrayList的對象,但我想將用戶從鍵盤輸入的ArrayList對象屬性移動到單獨的數組中,例如,將人的所有姓名都轉換為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()];

    }

}

有很多方法可以做到這一點。 一種方法是為年齡和名稱創建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]);

我不知道有什么花哨的方法可以做到這一點,但是,每當需要時,一種實現方法就是創建一個遍歷所有Person對象並創建兩個信息數組的方法。

所以...

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中。

然后,如果您真正需要將其作為“列表”而不是“ ArrayList”,則可以將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();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM