无法创建LinkedList <string,int =“”> </string,>

时间:2012-05-02 15:20:15

标签: java list map linked-list

我想创建一个LinkedList,其键是String,值是整数?

4 个答案:

答案 0 :(得分:8)

LinkedList 没有密钥。它是元素列表,不是键/值映射。

如果您想要LinkedList,其中每个元素都是一对Integer / String值,您需要选择以下其中一个:

  • 创建通用Pair
  • (Ab)使用现有的通用类(例如Map.Entry
  • 为您的特定方案创建自定义类

我建议将最后一个选项作为最合理的选项 - 您将能够根据字符串和整数的实际含义给出适当的语义和名称。哎呀,你也可以避免装箱整数,你可以:

public class WhateverYouCallIt {
    private final int firstValue;
    private final String secondValue;

    // Constructor, properties
}

答案 1 :(得分:4)

您只能在LinkedList中使用Object。这意味着您无法使用Java Primitives。 但是,您似乎需要的是Map结构。

我建议使用java.util.HashMap,它允许你创建一个Key,Value对。

示例:

    HashMap<String,Integer> a = new HashMap<String,Integer>();
    a.put("one",1);
    a.put("two",2);

    System.out.println(a.get("one"));
    //prints 1
    System.out.println(a.get("two"));
    //prints 2

编辑: 根据您的评论,我看到您需要订单,然后使用以下示例:

    LinkedHashMap<String, Integer> b = new LinkedHashMap<String,Integer>();

    b.put("one",1);
    b.put("two",2);
    b.put("a",3);

    for (String key:b.keySet())
    {
        System.out.println(b.get(key));    // print 1 then 2 finally 3
    }

希望这就是你所要求的(如果是,请修改你的问题)。

答案 2 :(得分:3)

一个错误是您需要Integer而不是int,但正如其他人指出的那样LinkedList不会使用键/值对。

答案 3 :(得分:1)

我想象一下HashMap就是你的追求。正如其他人所说,你不能使用诸如&#34; int&#34;之类的原始类型。在像LinkedList或ArrayList这样的库存储类中,您必须使用诸如&#34; Integer&#34;之类的对象。

HashMap hash = new HashMap();

阅读本文以获取更多信息:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html