条目列表,如何添加新条目?

时间:2011-05-25 07:55:26

标签: java

在Java中,我正在实现这个:

List<Entry<String, Integer>> listObjects = new ArrayList<Entry<String, Integer>>();

但是如何添加新条目?

因为它不适用于:listObjects.add(new Entry<"abc", 1>());

提前感谢。

5 个答案:

答案 0 :(得分:11)

我知道这是一个相当老的线程,但你可以这样做:

listObjects.add(new java.util.AbstractMap.SimpleEntry<String, Integer>("abc", 1));

这可能对像我这样的人有帮助,他最近正试图这样做!

我希望它有所帮助: - )

答案 1 :(得分:5)

你的意思是Map.Entry吗?这是一个接口(所以你不能在没有实现类的情况下实例化,你可以learn about interfaces in the Java Tutorial)。 Entry个实例通常仅由Map实施创建,仅通过Map.entrySet()

公开

当然,因为它是一个界面,你可以添加自己的实现,如下所示:

public class MyEntry<K, V> implements Entry<K, V> {
    private final K key;
    private V value;
    public MyEntry(final K key) {
        this.key = key;
    }
    public MyEntry(final K key, final V value) {
        this.key = key;
        this.value = value;
    }
    public K getKey() {
        return key;
    }
    public V getValue() {
        return value;
    }
    public V setValue(final V value) {
        final V oldValue = this.value;
        this.value = value;
        return oldValue;
    }
}

这样你可以做listObjects.add(new MyEntry<String,Integer>("abc", 1))

但在地图背景之外,这并没有多大意义。

答案 2 :(得分:4)

Entry参数化类,您需要使用构造函数(典型方式)创建Entry的实例。

不知道Entry的实现:这可能已经有效(至少它显示了它通常如何工作):

// create a list
List<Entry<String, Integer>> listObjects = 
               new ArrayList<Entry<String, Integer>>()

// create an instance of Entry
Entry<String, Integer> entry = new Entry<String, Integer>("abc", 1);

// add the instance of Entry to the list
listObjects.add(entry);

Map.Entry有点不同(OP刚提到,事实上EntryMap.Entry。我们无法创建Map.Entry个实例,我们通常会从现有地图:

Map<String, Integer> map = getMapFromSomewhere();
List<Map.Entry<String, Integer>> listObjects = 
               new ArrayList<Map.Entry<String, Integer>>();

for (Map.Entry<String, Integer> entry:map.entrySet())
    listObjects.add(entry);

答案 3 :(得分:2)

使用Entry的现成实现的一种方法是Guava's Immutable Entry 像这样listObjects.add(Maps.immutableEntry("abc",1));

答案 4 :(得分:0)

也许listObjects.add(new Entry<String, Integer>("abc", 1));?泛型指定类型(StringInteger),而不是值(abc1)。

编辑 - 请注意,后来添加Entry实际上是Map.Entry,因此您需要创建Map.Entry的实现实例化,正如所选答案所解释的那样。