2015-10-19 35 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

这是存储一对值的一种非常低效的方式。 –

相关问题