代码之家  ›  专栏  ›  技术社区  ›  Espen

通过自定义文本索引获取arraylist元素

  •  1
  • Espen  · 技术社区  · 14 年前

    我要做的是将类存储到ArrayList中,并通过它的索引号检索它们。但是在Java中有任何列表类,我可以通过它来检索列表元素,比如说它的名字吗?这样地:

    ArrayList<string> myArr = new ArrayList<string>();
    myArr.add( "ID_name", "String to store" );
    

    然后通过以下方式检索:

    myArr.get( "ID_name" );
    

    此外,还有其他替代ArrayList的方法吗?我需要一个列表类来优化:

    • 随机存取
    • 只需要将项目推入列表
    • 不需要从列表中删除任何内容
    6 回复  |  直到 14 年前
        1
  •  6
  •   perp    14 年前

    如果您只想存储键值对,而不关心迭代顺序,我想您可能会喜欢hashmap类:

    Map<String, String> map = new HashMap<String, String>();
    map.put("foo", "bar");
    String bar = map.get("foo"); // bar is "bar"
    
        2
  •  3
  •   Eugene Kuleshov    14 年前

    你可以用 LinkedHashMap ,因此它将保留顺序,但您可以像在常规映射中那样按键提取元素。虽然您不能按索引提取条目。

        3
  •  2
  •   Etienne de Martel    14 年前

    数组列表就是这样:一个数组。如果您希望通过索引以外的其他方式访问值,请查找映射接口的各种实现(如hashmap)。

        4
  •  1
  •   Romain Linsolas    14 年前

    使用A Map<String, String> . 在这种结构中,元素被添加一个键。因此,您可以通过键获取元素:

    Map<String, String> map = new HashMap<String, String>();
    map.put("id", "string");
    String s = map.get("id"); // s will be equals to "string".
    
        5
  •  1
  •   Ari Gesher    14 年前

    正如其他人提到的,如果您不关心迭代顺序,那么哈希图可能就是您想要的。

    如果这样,可以使用 LinkedHashMap 它实际上是一个连接到LinkedList的哈希图,为您提供了两个方面的最佳选择:快速随机访问和保留迭代顺序。

        6
  •  0
  •   scifirocket    14 年前

    使用哈希图。您可以以与arraylist相同的方式向哈希映射添加元素。此外,还可以创建一组键(每个(键、值)对的集合中有1个元素)。然后可以迭代键集。