2015-10-19 37 views
0

我需要創建類型的值的列表 - (長字符串) 像 -如何在arraylist中添加(long,String)?

ArrayList a = new ArrayList(); 
     a.add(1L,branchName); 

我怎麼能做到這一點,因爲如果我使用列表將只接受整型,字符串。

+0

請問您能否根據您的理解解釋add(int,String)? –

+1

還值得一提的是,集合不能被輸入到基元 - 你*必須*使用包裝類。 – JonK

回答

3

您應該注意,ArrayListadd(int,String)在給定的int索引(如果索引有效)中添加了String元素。 int參數不是ArrayList內容的一部分。

也許一個ArrayList是不適合你的正確選擇。如果您希望將Long鍵映射到String值,請使用Map<Long,String>

Map<Long,String> a = new HashMap<>(); 
a.put(1L,branchName); 
+0

我認爲值得注意的是,如果他想在列表中添加更多的元素作爲'Integer.MAX_VALUE'(猜測他爲什麼使用long作爲鍵),那麼這兩個結構都會失敗,因爲它們都只能在' Integer.MAX_VALUE'元素。 – SomeJavaGuy

2

您可以定義自定義類,例如

class IndexAndBranchName { 
    long index; 
    String branchName; 
} 

,然後添加這個實例到ArrayList:

ArrayList<IndexAndBranchName> a = new ArrayList<>(); 
a.add(new IndexAndBranchName(index, branchName)); 

無論你使用這種方法或類似葉蘭的事情取決於你需要使用爲隨後的名單是什麼:

  • 如果您想按索引查看「分支」,請使用Map;但是,每個鍵只能存儲一個值;如果每個鍵需要多個值,則可以使用Guava Multimap或類似的。
  • 如果你只是想要所有的索引/分支名稱對,你可以使用這種方法。
1

您可以使用下面的代碼爲你的問題。

HashMap的也是一個更好的選擇,但如果你想只ArrayList中,然後使用它。

List<Map<Object, Object>> mylist = new ArrayList<Map<Object, Object>>(); 
    Map map = new HashMap<>(); 
    map.put(1L, "BranchName"); 
    mylist.add(map); 
+1

這是存儲一對值的一種非常低效的方式。 –

相關問題