2017-06-01 78 views
2

我有一個List<User> userList需要轉換爲UserData[]ArrayList的用戶定義的類數組

for(int i = 0; i < userList.size(); i++){ 
    userData[i] = userList.get(i); 
} 

它總是返回null好像列表大小爲1。任何人都可以在此幫助。

+0

地點的完整代碼 –

+1

也許你的列表中包含'null'?另外,請告訴我們'userData []'和'userList'的聲明和初始化。 – domsson

+0

顯示'return'語句 –

回答

3

類別可以被轉換爲陣列:

UserData[] userArray = userList.toArray(new UserData[userList.size()]) 
+1

將不起作用。 ['toArray'](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#toArray--)返回Object []' –

+0

正確,對不起 –

+1

會工作,但'新的UserData [0]'更快。除此之外,它是'userList.size()' –

3

只是另一種選擇,此時使用java8流的功率:

List<Foo> myList = Arrays.asList(new Foo(), new Foo(), new Foo(), new Foo()); 
Foo[] stringArray = myList.stream().toArray(Foo[]::new); 

編輯:

流實際上不是必要的,這樣你仍然可以這樣做:

Foo[] fooArray = myList.toArray(new Foo[0]) 
+5

沒有真正需要在這裏使用流。 Foo [] fooArray = myList.toArray(new Foo [0]); – LazerBanana

0

這裏是代碼試試這個

import java.util.ArrayList; 

public class ArrayListTest { 

static UserData[] userdata = new UserData[3]; 

public static void main(String[] args) { 
    ArrayListTest alt = new ArrayListTest(); 
    ArrayList<UserData> users = alt.arrayTest(); 

    for (int i = 0; i < users.size(); i++) { 
     userdata[i] = users.get(i); 
    } 

    for (UserData ud : userdata) { 
     System.out.println("User Name " + ud.getName()); 

    } 

} 

private ArrayList<UserData> arrayTest() { 
    ArrayList<UserData> userList = new ArrayList<>(); 
    userList.add(new UserData("user 1")); 
    userList.add(new UserData("user 2")); 
    userList.add(new UserData("user 3")); 
    return userList; 
} 

private class UserData { 

    private final String name; 

    public UserData(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

} 

} 

this is the output screen