2012-12-03 124 views
0

我需要創建一個未定義大小的數組,其中將包含用戶信息。未知大小的多維數組

例如:

user[0]["name"] = "Patrick"; 

然而,標準的Java陣列似乎需要一個已知的長度,這不知道。

我可以用什麼替代? (我會很高興地看到一些編碼示例)我正在使用TCP框架(),它不允許使用構造函數傳遞對象。因此,據我所見,製作User對象是不可能的。

+4

你可能會存儲'ArrayList '其中'Person'包含屬性'name'。 –

+0

使用'ArrayList' – andreih

+0

只需要注意,kryonet DOES允許你使用構造函數傳遞對象,它只需要有一個空的()構造函數。 –

回答

2

在java中我們只能用整數值細胞指數。

我猜你正在尋找的地圖列表:

List<Map<String, String>> persons = new ArrayList<Map<String, String>>(); 

// add Patrick 
Map<String, String> person = new HashMap<String, String>(); 
person.put("name", "Patrick"); 
person.put("age", "23"); 
persons.add(person); 

// add Sue 
person = new HashMap<String, String>(); 
person.put("name", "Sue"); 
person.put("age", "21"); 
persons.add(person); 

要訪問的所有名稱,例如:

for (Map<String, String> person:persons) { 
    System.out.println(person.get("name")); 
} 
+0

這絕對是我需要的。但是,我不能添加多個人,它只是覆蓋其他人。我如何爲此添加多個人? :-) –

+0

每個人「是」列表中的地圖。只需爲每個新人創建一張新地圖並將其添加到列表(人員)中即可。我在最後一行添加了Patrick。 –

+0

我無法讓它工作。你能否擴展你的榜樣以包含第二人? –

0

你不能在Java中使用關聯數組。換句話說,你不能使用「名稱」作爲關鍵。

但是你可以不這樣做指定大小創建空數組:

String[] array = new String[]{}; 

但是,試圖把東西放到這個數組會給你一個indexoutofbound例外

3

首先,你應該使用對象而不是arbitary數據結構,如果你不知道的大小,我會用一個列表

List<Person> people = new ArrayList<Person>(); 
people.add(new Person("Patrick")); 
+0

問題是,我的Player類有一個構造函數,我使用的TCP框架(Kryonet)不允許發送 –

+0

你不能發送任何對象,即使是一個String通過TCP的對象。你必須以某種方式序列化/編碼它。我會定義你的班級,並將其作爲一個單獨的考慮序列化。 –

+0

我開發框架序列化程序無法處理具有構造函數的對象:-) –

0

你應該考慮創建一個類(如人)和只使用一個List來管理它。你可以做這樣的事情:

List<Peson> myLyst = new ArrayList<Person>(); 
Person person = new Person("Patrick"); 
myList.add(0, person);